Annotation of embedaddon/libxml2/trio.h, revision 1.1.1.2
1.1 misho 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: */
1.1.1.2 ! misho 31: #if defined(TRIO_HAVE_CONFIG_H)
1.1 misho 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 */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>