1/*
2 * Summary: compile-time version information
3 * Description: compile-time version information for the XML library
4 *
5 * Copy: See Copyright for the status of this software.
6 *
7 * Author: Daniel Veillard
8 */
9
10#ifndef __XML_VERSION_H__
11#define __XML_VERSION_H__
12
13#include <libxml/xmlexports.h>
14
15#ifdef __cplusplus
16extern "C" {
17#endif
18
19/*
20 * use those to be sure nothing nasty will happen if
21 * your library and includes mismatch
22 */
23#ifndef LIBXML2_COMPILING_MSCCDEF
24XMLPUBFUN void XMLCALL xmlCheckVersion(int version);
25#endif /* LIBXML2_COMPILING_MSCCDEF */
26
27/**
28 * LIBXML_DOTTED_VERSION:
29 *
30 * the version string like "1.2.3"
31 */
32#define LIBXML_DOTTED_VERSION "@VERSION@"
33
34/**
35 * LIBXML_VERSION:
36 *
37 * the version number: 1.2.3 value is 10203
38 */
39#define LIBXML_VERSION @LIBXML_VERSION_NUMBER@
40
41/**
42 * LIBXML_VERSION_STRING:
43 *
44 * the version number string, 1.2.3 value is "10203"
45 */
46#define LIBXML_VERSION_STRING "@LIBXML_VERSION_NUMBER@"
47
48/**
49 * LIBXML_VERSION_EXTRA:
50 *
51 * extra version information, used to show a git commit description
52 */
53#define LIBXML_VERSION_EXTRA "@LIBXML_VERSION_EXTRA@"
54
55/**
56 * LIBXML_TEST_VERSION:
57 *
58 * Macro to check that the libxml version in use is compatible with
59 * the version the software has been compiled against
60 */
61#define LIBXML_TEST_VERSION xmlCheckVersion(@LIBXML_VERSION_NUMBER@);
62
63#ifndef VMS
64#if @WITH_TRIO@
65/**
66 * WITH_TRIO:
67 *
68 * defined if the trio support need to be configured in
69 */
70#define WITH_TRIO
71#else
72/**
73 * WITHOUT_TRIO:
74 *
75 * defined if the trio support should not be configured in
76 */
77#define WITHOUT_TRIO
78#endif
79#else /* VMS */
80/**
81 * WITH_TRIO:
82 *
83 * defined if the trio support need to be configured in
84 */
85#define WITH_TRIO 1
86#endif /* VMS */
87
88/**
89 * LIBXML_THREAD_ENABLED:
90 *
91 * Whether the thread support is configured in
92 */
93#if @WITH_THREADS@
94#define LIBXML_THREAD_ENABLED
95#endif
96
97/**
98 * LIBXML_THREAD_ALLOC_ENABLED:
99 *
100 * Whether the allocation hooks are per-thread
101 */
102#if @WITH_THREAD_ALLOC@
103#define LIBXML_THREAD_ALLOC_ENABLED
104#endif
105
106/**
107 * LIBXML_TREE_ENABLED:
108 *
109 * Whether the DOM like tree manipulation API support is configured in
110 */
111#if @WITH_TREE@
112#define LIBXML_TREE_ENABLED
113#endif
114
115/**
116 * LIBXML_OUTPUT_ENABLED:
117 *
118 * Whether the serialization/saving support is configured in
119 */
120#if @WITH_OUTPUT@
121#define LIBXML_OUTPUT_ENABLED
122#endif
123
124/**
125 * LIBXML_PUSH_ENABLED:
126 *
127 * Whether the push parsing interfaces are configured in
128 */
129#if @WITH_PUSH@
130#define LIBXML_PUSH_ENABLED
131#endif
132
133/**
134 * LIBXML_READER_ENABLED:
135 *
136 * Whether the xmlReader parsing interface is configured in
137 */
138#if @WITH_READER@
139#define LIBXML_READER_ENABLED
140#endif
141
142/**
143 * LIBXML_PATTERN_ENABLED:
144 *
145 * Whether the xmlPattern node selection interface is configured in
146 */
147#if @WITH_PATTERN@
148#define LIBXML_PATTERN_ENABLED
149#endif
150
151/**
152 * LIBXML_WRITER_ENABLED:
153 *
154 * Whether the xmlWriter saving interface is configured in
155 */
156#if @WITH_WRITER@
157#define LIBXML_WRITER_ENABLED
158#endif
159
160/**
161 * LIBXML_SAX1_ENABLED:
162 *
163 * Whether the older SAX1 interface is configured in
164 */
165#if @WITH_SAX1@
166#define LIBXML_SAX1_ENABLED
167#endif
168
169/**
170 * LIBXML_FTP_ENABLED:
171 *
172 * Whether the FTP support is configured in
173 */
174#if @WITH_FTP@
175#define LIBXML_FTP_ENABLED
176#endif
177
178/**
179 * LIBXML_HTTP_ENABLED:
180 *
181 * Whether the HTTP support is configured in
182 */
183#if @WITH_HTTP@
184#define LIBXML_HTTP_ENABLED
185#endif
186
187/**
188 * LIBXML_VALID_ENABLED:
189 *
190 * Whether the DTD validation support is configured in
191 */
192#if @WITH_VALID@
193#define LIBXML_VALID_ENABLED
194#endif
195
196/**
197 * LIBXML_HTML_ENABLED:
198 *
199 * Whether the HTML support is configured in
200 */
201#if @WITH_HTML@
202#define LIBXML_HTML_ENABLED
203#endif
204
205/**
206 * LIBXML_LEGACY_ENABLED:
207 *
208 * Whether the deprecated APIs are compiled in for compatibility
209 */
210#if @WITH_LEGACY@
211#define LIBXML_LEGACY_ENABLED
212#endif
213
214/**
215 * LIBXML_C14N_ENABLED:
216 *
217 * Whether the Canonicalization support is configured in
218 */
219#if @WITH_C14N@
220#define LIBXML_C14N_ENABLED
221#endif
222
223/**
224 * LIBXML_CATALOG_ENABLED:
225 *
226 * Whether the Catalog support is configured in
227 */
228#if @WITH_CATALOG@
229#define LIBXML_CATALOG_ENABLED
230#endif
231
232/**
233 * LIBXML_XPATH_ENABLED:
234 *
235 * Whether XPath is configured in
236 */
237#if @WITH_XPATH@
238#define LIBXML_XPATH_ENABLED
239#endif
240
241/**
242 * LIBXML_XPTR_ENABLED:
243 *
244 * Whether XPointer is configured in
245 */
246#if @WITH_XPTR@
247#define LIBXML_XPTR_ENABLED
248#endif
249
250/**
251 * LIBXML_XPTR_LOCS_ENABLED:
252 *
253 * Whether support for XPointer locations is configured in
254 */
255#if @WITH_XPTR_LOCS@
256#define LIBXML_XPTR_LOCS_ENABLED
257#endif
258
259/**
260 * LIBXML_XINCLUDE_ENABLED:
261 *
262 * Whether XInclude is configured in
263 */
264#if @WITH_XINCLUDE@
265#define LIBXML_XINCLUDE_ENABLED
266#endif
267
268/**
269 * LIBXML_ICONV_ENABLED:
270 *
271 * Whether iconv support is available
272 */
273#if @WITH_ICONV@
274#define LIBXML_ICONV_ENABLED
275#endif
276
277/**
278 * LIBXML_ICU_ENABLED:
279 *
280 * Whether icu support is available
281 */
282#if @WITH_ICU@
283#define LIBXML_ICU_ENABLED
284#endif
285
286/**
287 * LIBXML_ISO8859X_ENABLED:
288 *
289 * Whether ISO-8859-* support is made available in case iconv is not
290 */
291#if @WITH_ISO8859X@
292#define LIBXML_ISO8859X_ENABLED
293#endif
294
295/**
296 * LIBXML_DEBUG_ENABLED:
297 *
298 * Whether Debugging module is configured in
299 */
300#if @WITH_DEBUG@
301#define LIBXML_DEBUG_ENABLED
302#endif
303
304/**
305 * DEBUG_MEMORY_LOCATION:
306 *
307 * Whether the memory debugging is configured in
308 */
309#if @WITH_MEM_DEBUG@
310#define DEBUG_MEMORY_LOCATION
311#endif
312
313/**
314 * LIBXML_DEBUG_RUNTIME:
315 *
316 * Whether the runtime debugging is configured in
317 */
318#if @WITH_RUN_DEBUG@
319#define LIBXML_DEBUG_RUNTIME
320#endif
321
322/**
323 * LIBXML_UNICODE_ENABLED:
324 *
325 * Whether the Unicode related interfaces are compiled in
326 */
327#if @WITH_REGEXPS@
328#define LIBXML_UNICODE_ENABLED
329#endif
330
331/**
332 * LIBXML_REGEXP_ENABLED:
333 *
334 * Whether the regular expressions interfaces are compiled in
335 */
336#if @WITH_REGEXPS@
337#define LIBXML_REGEXP_ENABLED
338#endif
339
340/**
341 * LIBXML_AUTOMATA_ENABLED:
342 *
343 * Whether the automata interfaces are compiled in
344 */
345#if @WITH_REGEXPS@
346#define LIBXML_AUTOMATA_ENABLED
347#endif
348
349/**
350 * LIBXML_EXPR_ENABLED:
351 *
352 * Whether the formal expressions interfaces are compiled in
353 *
354 * This code is unused and disabled unconditionally for now.
355 */
356#if 0
357#define LIBXML_EXPR_ENABLED
358#endif
359
360/**
361 * LIBXML_SCHEMAS_ENABLED:
362 *
363 * Whether the Schemas validation interfaces are compiled in
364 */
365#if @WITH_SCHEMAS@
366#define LIBXML_SCHEMAS_ENABLED
367#endif
368
369/**
370 * LIBXML_SCHEMATRON_ENABLED:
371 *
372 * Whether the Schematron validation interfaces are compiled in
373 */
374#if @WITH_SCHEMATRON@
375#define LIBXML_SCHEMATRON_ENABLED
376#endif
377
378/**
379 * LIBXML_MODULES_ENABLED:
380 *
381 * Whether the module interfaces are compiled in
382 */
383#if @WITH_MODULES@
384#define LIBXML_MODULES_ENABLED
385/**
386 * LIBXML_MODULE_EXTENSION:
387 *
388 * the string suffix used by dynamic modules (usually shared libraries)
389 */
390#define LIBXML_MODULE_EXTENSION "@MODULE_EXTENSION@"
391#endif
392
393/**
394 * LIBXML_ZLIB_ENABLED:
395 *
396 * Whether the Zlib support is compiled in
397 */
398#if @WITH_ZLIB@
399#define LIBXML_ZLIB_ENABLED
400#endif
401
402/**
403 * LIBXML_LZMA_ENABLED:
404 *
405 * Whether the Lzma support is compiled in
406 */
407#if @WITH_LZMA@
408#define LIBXML_LZMA_ENABLED
409#endif
410
411#ifdef __GNUC__
412
413/**
414 * ATTRIBUTE_UNUSED:
415 *
416 * Macro used to signal to GCC unused function parameters
417 */
418
419#ifndef ATTRIBUTE_UNUSED
420# if ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 7)))
421#  define ATTRIBUTE_UNUSED __attribute__((unused))
422# else
423#  define ATTRIBUTE_UNUSED
424# endif
425#endif
426
427/**
428 * LIBXML_ATTR_ALLOC_SIZE:
429 *
430 * Macro used to indicate to GCC this is an allocator function
431 */
432
433#ifndef LIBXML_ATTR_ALLOC_SIZE
434# if (!defined(__clang__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3))))
435#  define LIBXML_ATTR_ALLOC_SIZE(x) __attribute__((alloc_size(x)))
436# else
437#  define LIBXML_ATTR_ALLOC_SIZE(x)
438# endif
439#else
440# define LIBXML_ATTR_ALLOC_SIZE(x)
441#endif
442
443/**
444 * LIBXML_ATTR_FORMAT:
445 *
446 * Macro used to indicate to GCC the parameter are printf like
447 */
448
449#ifndef LIBXML_ATTR_FORMAT
450# if ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)))
451#  define LIBXML_ATTR_FORMAT(fmt,args) __attribute__((__format__(__printf__,fmt,args)))
452# else
453#  define LIBXML_ATTR_FORMAT(fmt,args)
454# endif
455#else
456# define LIBXML_ATTR_FORMAT(fmt,args)
457#endif
458
459#ifndef XML_DEPRECATED
460#  ifdef IN_LIBXML
461#    define XML_DEPRECATED
462#  else
463/* Available since at least GCC 3.1 */
464#    define XML_DEPRECATED __attribute__((deprecated))
465#  endif
466#endif
467
468#else /* ! __GNUC__ */
469/**
470 * ATTRIBUTE_UNUSED:
471 *
472 * Macro used to signal to GCC unused function parameters
473 */
474#define ATTRIBUTE_UNUSED
475/**
476 * LIBXML_ATTR_ALLOC_SIZE:
477 *
478 * Macro used to indicate to GCC this is an allocator function
479 */
480#define LIBXML_ATTR_ALLOC_SIZE(x)
481/**
482 * LIBXML_ATTR_FORMAT:
483 *
484 * Macro used to indicate to GCC the parameter are printf like
485 */
486#define LIBXML_ATTR_FORMAT(fmt,args)
487/**
488 * XML_DEPRECATED:
489 *
490 * Macro used to indicate that a function, variable, type or struct member
491 * is deprecated.
492 */
493#ifndef XML_DEPRECATED
494#define XML_DEPRECATED
495#endif
496#endif /* __GNUC__ */
497
498#ifdef __cplusplus
499}
500#endif /* __cplusplus */
501#endif
502
503
504