Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
wine-mirror
GitHub Repository: wine-mirror/wine
Path: blob/master/libs/xslt/libxslt/trio.h
4389 views
1
/*************************************************************************
2
*
3
* $Id$
4
*
5
* Copyright (C) 1998 Bjorn Reese and Daniel Stenberg.
6
*
7
* Permission to use, copy, modify, and distribute this software for any
8
* purpose with or without fee is hereby granted, provided that the above
9
* copyright notice and this permission notice appear in all copies.
10
*
11
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
12
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
13
* MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND
14
* CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER.
15
*
16
*************************************************************************
17
*
18
* http://ctrio.sourceforge.net/
19
*
20
************************************************************************/
21
22
#ifndef TRIO_TRIO_H
23
#define TRIO_TRIO_H
24
25
#if !defined(WITHOUT_TRIO)
26
27
/*
28
* Use autoconf defines if present. Packages using trio must define
29
* HAVE_CONFIG_H as a compiler option themselves.
30
*/
31
#if defined(HAVE_CONFIG_H)
32
# include <config.h>
33
#endif
34
35
#include "triodef.h"
36
37
#include <stdio.h>
38
#include <stdlib.h>
39
#if defined(TRIO_COMPILER_ANCIENT)
40
# include <varargs.h>
41
#else
42
# include <stdarg.h>
43
#endif
44
45
#ifdef __cplusplus
46
extern "C" {
47
#endif
48
49
/*
50
* Error codes.
51
*
52
* Remember to add a textual description to trio_strerror.
53
*/
54
enum {
55
TRIO_EOF = 1,
56
TRIO_EINVAL = 2,
57
TRIO_ETOOMANY = 3,
58
TRIO_EDBLREF = 4,
59
TRIO_EGAP = 5,
60
TRIO_ENOMEM = 6,
61
TRIO_ERANGE = 7,
62
TRIO_ERRNO = 8,
63
TRIO_ECUSTOM = 9
64
};
65
66
/* Error macros */
67
#define TRIO_ERROR_CODE(x) ((-(x)) & 0x00FF)
68
#define TRIO_ERROR_POSITION(x) ((-(x)) >> 8)
69
#define TRIO_ERROR_NAME(x) trio_strerror(x)
70
71
typedef int (*trio_outstream_t) TRIO_PROTO((trio_pointer_t, int));
72
typedef int (*trio_instream_t) TRIO_PROTO((trio_pointer_t));
73
74
TRIO_CONST char *trio_strerror TRIO_PROTO((int));
75
76
/*************************************************************************
77
* Print Functions
78
*/
79
80
int trio_printf TRIO_PROTO((TRIO_CONST char *format, ...));
81
int trio_vprintf TRIO_PROTO((TRIO_CONST char *format, va_list args));
82
int trio_printfv TRIO_PROTO((TRIO_CONST char *format, void **args));
83
84
int trio_fprintf TRIO_PROTO((FILE *file, TRIO_CONST char *format, ...));
85
int trio_vfprintf TRIO_PROTO((FILE *file, TRIO_CONST char *format, va_list args));
86
int trio_fprintfv TRIO_PROTO((FILE *file, TRIO_CONST char *format, void **args));
87
88
int trio_dprintf TRIO_PROTO((int fd, TRIO_CONST char *format, ...));
89
int trio_vdprintf TRIO_PROTO((int fd, TRIO_CONST char *format, va_list args));
90
int trio_dprintfv TRIO_PROTO((int fd, TRIO_CONST char *format, void **args));
91
92
int trio_cprintf TRIO_PROTO((trio_outstream_t stream, trio_pointer_t closure,
93
TRIO_CONST char *format, ...));
94
int trio_vcprintf TRIO_PROTO((trio_outstream_t stream, trio_pointer_t closure,
95
TRIO_CONST char *format, va_list args));
96
int trio_cprintfv TRIO_PROTO((trio_outstream_t stream, trio_pointer_t closure,
97
TRIO_CONST char *format, void **args));
98
99
int trio_sprintf TRIO_PROTO((char *buffer, TRIO_CONST char *format, ...));
100
int trio_vsprintf TRIO_PROTO((char *buffer, TRIO_CONST char *format, va_list args));
101
int trio_sprintfv TRIO_PROTO((char *buffer, TRIO_CONST char *format, void **args));
102
103
int trio_snprintf TRIO_PROTO((char *buffer, size_t max, TRIO_CONST char *format, ...));
104
int trio_vsnprintf TRIO_PROTO((char *buffer, size_t bufferSize, TRIO_CONST char *format,
105
va_list args));
106
int trio_snprintfv TRIO_PROTO((char *buffer, size_t bufferSize, TRIO_CONST char *format,
107
void **args));
108
109
int trio_snprintfcat TRIO_PROTO((char *buffer, size_t max, TRIO_CONST char *format, ...));
110
int trio_vsnprintfcat TRIO_PROTO((char *buffer, size_t bufferSize, TRIO_CONST char *format,
111
va_list args));
112
113
char *trio_aprintf TRIO_PROTO((TRIO_CONST char *format, ...));
114
char *trio_vaprintf TRIO_PROTO((TRIO_CONST char *format, va_list args));
115
116
int trio_asprintf TRIO_PROTO((char **ret, TRIO_CONST char *format, ...));
117
int trio_vasprintf TRIO_PROTO((char **ret, TRIO_CONST char *format, va_list args));
118
119
/*************************************************************************
120
* Scan Functions
121
*/
122
int trio_scanf TRIO_PROTO((TRIO_CONST char *format, ...));
123
int trio_vscanf TRIO_PROTO((TRIO_CONST char *format, va_list args));
124
int trio_scanfv TRIO_PROTO((TRIO_CONST char *format, void **args));
125
126
int trio_fscanf TRIO_PROTO((FILE *file, TRIO_CONST char *format, ...));
127
int trio_vfscanf TRIO_PROTO((FILE *file, TRIO_CONST char *format, va_list args));
128
int trio_fscanfv TRIO_PROTO((FILE *file, TRIO_CONST char *format, void **args));
129
130
int trio_dscanf TRIO_PROTO((int fd, TRIO_CONST char *format, ...));
131
int trio_vdscanf TRIO_PROTO((int fd, TRIO_CONST char *format, va_list args));
132
int trio_dscanfv TRIO_PROTO((int fd, TRIO_CONST char *format, void **args));
133
134
int trio_cscanf TRIO_PROTO((trio_instream_t stream, trio_pointer_t closure,
135
TRIO_CONST char *format, ...));
136
int trio_vcscanf TRIO_PROTO((trio_instream_t stream, trio_pointer_t closure,
137
TRIO_CONST char *format, va_list args));
138
int trio_cscanfv TRIO_PROTO((trio_instream_t stream, trio_pointer_t closure,
139
TRIO_CONST char *format, void **args));
140
141
int trio_sscanf TRIO_PROTO((TRIO_CONST char *buffer, TRIO_CONST char *format, ...));
142
int trio_vsscanf TRIO_PROTO((TRIO_CONST char *buffer, TRIO_CONST char *format, va_list args));
143
int trio_sscanfv TRIO_PROTO((TRIO_CONST char *buffer, TRIO_CONST char *format, void **args));
144
145
/*************************************************************************
146
* Locale Functions
147
*/
148
void trio_locale_set_decimal_point TRIO_PROTO((char *decimalPoint));
149
void trio_locale_set_thousand_separator TRIO_PROTO((char *thousandSeparator));
150
void trio_locale_set_grouping TRIO_PROTO((char *grouping));
151
152
/*************************************************************************
153
* Renaming
154
*/
155
#ifdef TRIO_REPLACE_STDIO
156
/* Replace the <stdio.h> functions */
157
#ifndef HAVE_PRINTF
158
# define printf trio_printf
159
#endif
160
#ifndef HAVE_VPRINTF
161
# define vprintf trio_vprintf
162
#endif
163
#ifndef HAVE_FPRINTF
164
# define fprintf trio_fprintf
165
#endif
166
#ifndef HAVE_VFPRINTF
167
# define vfprintf trio_vfprintf
168
#endif
169
#ifndef HAVE_SPRINTF
170
# define sprintf trio_sprintf
171
#endif
172
#ifndef HAVE_VSPRINTF
173
# define vsprintf trio_vsprintf
174
#endif
175
#ifndef HAVE_SNPRINTF
176
# define snprintf trio_snprintf
177
#endif
178
#ifndef HAVE_VSNPRINTF
179
# define vsnprintf trio_vsnprintf
180
#endif
181
#ifndef HAVE_SCANF
182
# define scanf trio_scanf
183
#endif
184
#ifndef HAVE_VSCANF
185
# define vscanf trio_vscanf
186
#endif
187
#ifndef HAVE_FSCANF
188
# define fscanf trio_fscanf
189
#endif
190
#ifndef HAVE_VFSCANF
191
# define vfscanf trio_vfscanf
192
#endif
193
#ifndef HAVE_SSCANF
194
# define sscanf trio_sscanf
195
#endif
196
#ifndef HAVE_VSSCANF
197
# define vsscanf trio_vsscanf
198
#endif
199
/* These aren't stdio functions, but we make them look similar */
200
#define dprintf trio_dprintf
201
#define vdprintf trio_vdprintf
202
#define aprintf trio_aprintf
203
#define vaprintf trio_vaprintf
204
#define asprintf trio_asprintf
205
#define vasprintf trio_vasprintf
206
#define dscanf trio_dscanf
207
#define vdscanf trio_vdscanf
208
#endif
209
210
#ifdef __cplusplus
211
} /* extern "C" */
212
#endif
213
214
#endif /* WITHOUT_TRIO */
215
216
#endif /* TRIO_TRIO_H */
217
218