1: /* Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
2: See the file COPYING for copying permission.
3: */
4:
5: #ifndef Expat_External_INCLUDED
6: #define Expat_External_INCLUDED 1
7:
8: /* External API definitions */
9:
10: #if defined(_MSC_EXTENSIONS) && !defined(__BEOS__) && !defined(__CYGWIN__)
11: #define XML_USE_MSC_EXTENSIONS 1
12: #endif
13:
14: /* Expat tries very hard to make the API boundary very specifically
15: defined. There are two macros defined to control this boundary;
16: each of these can be defined before including this header to
17: achieve some different behavior, but doing so it not recommended or
18: tested frequently.
19:
20: XMLCALL - The calling convention to use for all calls across the
21: "library boundary." This will default to cdecl, and
22: try really hard to tell the compiler that's what we
23: want.
24:
25: XMLIMPORT - Whatever magic is needed to note that a function is
26: to be imported from a dynamically loaded library
27: (.dll, .so, or .sl, depending on your platform).
28:
29: The XMLCALL macro was added in Expat 1.95.7. The only one which is
30: expected to be directly useful in client code is XMLCALL.
31:
32: Note that on at least some Unix versions, the Expat library must be
33: compiled with the cdecl calling convention as the default since
34: system headers may assume the cdecl convention.
35: */
36: #ifndef XMLCALL
37: #if defined(_MSC_VER)
38: #define XMLCALL __cdecl
39: #elif defined(__GNUC__) && defined(__i386) && !defined(__INTEL_COMPILER)
40: #define XMLCALL __attribute__((cdecl))
41: #else
42: /* For any platform which uses this definition and supports more than
43: one calling convention, we need to extend this definition to
44: declare the convention used on that platform, if it's possible to
45: do so.
46:
47: If this is the case for your platform, please file a bug report
48: with information on how to identify your platform via the C
49: pre-processor and how to specify the same calling convention as the
50: platform's malloc() implementation.
51: */
52: #define XMLCALL
53: #endif
54: #endif /* not defined XMLCALL */
55:
56:
57: #if !defined(XML_STATIC) && !defined(XMLIMPORT)
58: #ifndef XML_BUILDING_EXPAT
59: /* using Expat from an application */
60:
61: #ifdef XML_USE_MSC_EXTENSIONS
62: #define XMLIMPORT __declspec(dllimport)
63: #endif
64:
65: #endif
66: #endif /* not defined XML_STATIC */
67:
68:
69: /* If we didn't define it above, define it away: */
70: #ifndef XMLIMPORT
71: #define XMLIMPORT
72: #endif
73:
74:
75: #define XMLPARSEAPI(type) XMLIMPORT type XMLCALL
76:
77: #ifdef __cplusplus
78: extern "C" {
79: #endif
80:
81: #ifdef XML_UNICODE_WCHAR_T
82: #define XML_UNICODE
83: #endif
84:
85: #ifdef XML_UNICODE /* Information is UTF-16 encoded. */
86: #ifdef XML_UNICODE_WCHAR_T
87: typedef wchar_t XML_Char;
88: typedef wchar_t XML_LChar;
89: #else
90: typedef unsigned short XML_Char;
91: typedef char XML_LChar;
92: #endif /* XML_UNICODE_WCHAR_T */
93: #else /* Information is UTF-8 encoded. */
94: typedef char XML_Char;
95: typedef char XML_LChar;
96: #endif /* XML_UNICODE */
97:
98: #ifdef XML_LARGE_SIZE /* Use large integers for file/stream positions. */
99: #if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400
100: typedef __int64 XML_Index;
101: typedef unsigned __int64 XML_Size;
102: #else
103: typedef long long XML_Index;
104: typedef unsigned long long XML_Size;
105: #endif
106: #else
107: typedef long XML_Index;
108: typedef unsigned long XML_Size;
109: #endif /* XML_LARGE_SIZE */
110:
111: #ifdef __cplusplus
112: }
113: #endif
114:
115: #endif /* not Expat_External_INCLUDED */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>