summaryrefslogtreecommitdiff
path: root/ext/xslt/php_sablot.h
blob: 7f4b415c180ba9ceac3fdcae2fe68eaf1636b7ae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
/*
   +----------------------------------------------------------------------+
   | PHP Version 4                                                        |
   +----------------------------------------------------------------------+
   | Copyright (c) 1997-2003 The PHP Group                                |
   +----------------------------------------------------------------------+
   | This source file is subject to version 2.02 of the PHP license,      |
   | that is bundled with this package in the file LICENSE, and is        |
   | available at through the world-wide-web at                           |
   | http://www.php.net/license/2_02.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: Sterling Hughes <sterling@php.net>                           |
   +----------------------------------------------------------------------+
 */

#ifndef PHP_XSLT_H
#define PHP_XSLT_H

#include "php.h"

#if HAVE_SABLOT_BACKEND

#include "php_xslt.h"

#include <sablot.h>

extern zend_module_entry xslt_module_entry;
#define phpext_xslt_ptr &xslt_module_entry

#ifdef PHP_WIN32
#define PHP_XSLT_API __declspec(dllexport)
#else
#define PHP_XSLT_API
#endif

#define XSLT_SCHEME(handle)    ((handle)->handlers->scheme)
#define XSLT_SAX(handle)       ((handle)->handlers->sax)
#define XSLT_ERROR(handle)     ((handle)->handlers->error)

#define XSLT_PROCESSOR(handle) ((handle)->processor.ptr)
#define XSLT_SITUATION(handle)  ((handle)->processor.sit)

#define XSLT_ERRNO(handle)     ((handle)->err->no)
#define XSLT_ERRSTR(handle)    ((handle)->err->str)
#define XSLT_LOG(handle)       ((handle)->err->log)
#define XSLT_BASE_ISSET(handle) ((handle)->base_isset)

#define XSLT_FUNCH_FREE(__var) if (__var) zval_ptr_dtor(&(__var)); 
#define XSLT_REG_ERRMSG(msg, handle)	if (XSLT_ERRSTR(handle)) efree(XSLT_ERRSTR(handle)); \
					XSLT_ERRSTR(handle) = estrdup(msg);
#define XSLT_NO_INFO   "No information available."

PHP_MINIT_FUNCTION(xslt);
PHP_MINFO_FUNCTION(xslt);

PHP_FUNCTION(xslt_create);
PHP_FUNCTION(xslt_set_sax_handlers);
PHP_FUNCTION(xslt_set_scheme_handlers);
PHP_FUNCTION(xslt_set_error_handler);
PHP_FUNCTION(xslt_set_base);
PHP_FUNCTION(xslt_set_encoding);
PHP_FUNCTION(xslt_set_log);
PHP_FUNCTION(xslt_process);
PHP_FUNCTION(xslt_error);
PHP_FUNCTION(xslt_errno);
PHP_FUNCTION(xslt_free);
PHP_FUNCTION(xslt_set_object);
PHP_FUNCTION(xslt_setopt);
#ifdef HAVE_SABLOT_GET_OPTIONS
PHP_FUNCTION(xslt_getopt);
#endif
PHP_FUNCTION(xslt_backend_version);
PHP_FUNCTION(xslt_backend_name);
PHP_FUNCTION(xslt_backend_info);

struct scheme_handlers {
	zval *sh_get_all;
	zval *sh_open;
	zval *sh_get;
	zval *sh_put;
	zval *sh_close;
};

struct sax_handlers {
	zval *doc_start;
	zval *element_start;
	zval *element_end;
	zval *namespace_start;
	zval *namespace_end;
	zval *comment;
	zval *pi;
	zval *characters;
	zval *doc_end;
};

struct xslt_handlers {
	struct scheme_handlers   scheme;
	struct sax_handlers      sax;
	zval                    *error;
};

struct xslt_processor {
	SablotHandle ptr;
	SablotSituation sit;
	long         idx;
};

struct xslt_log {
	char *path;
	int   fd;
	int   do_log;
};

struct xslt_error {
	struct xslt_log  log;
	char            *str;
	int              no;
};

typedef struct {
	struct xslt_handlers  *handlers;
	struct xslt_processor  processor;
	struct xslt_error     *err;
	zval                  *object;
	unsigned short         base_isset;
} php_xslt;

#else
#define phpext_xslt_ptr NULL
#endif

#endif

/*
 * Local variables:
 * tab-width: 4
 * c-basic-offset: 4
 * End:
 */