ReactOS 0.4.15-dev-7934-g1dc8d80
trio.h
Go to the documentation of this file.
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 * MERCHANTABILITY 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(TRIO_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
46extern "C" {
47#endif
48
49/*
50 * Error codes.
51 *
52 * Remember to add a textual description to trio_strerror.
53 */
54enum {
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
71typedef int (*trio_outstream_t) TRIO_PROTO((trio_pointer_t, int));
72typedef int (*trio_instream_t) TRIO_PROTO((trio_pointer_t));
73
74TRIO_CONST char *trio_strerror TRIO_PROTO((int));
75
76/*************************************************************************
77 * Print Functions
78 */
79
80int trio_printf TRIO_PROTO((TRIO_CONST char *format, ...));
81int trio_vprintf TRIO_PROTO((TRIO_CONST char *format, va_list args));
82int trio_printfv TRIO_PROTO((TRIO_CONST char *format, void **args));
83
84int trio_fprintf TRIO_PROTO((FILE *file, TRIO_CONST char *format, ...));
85int trio_vfprintf TRIO_PROTO((FILE *file, TRIO_CONST char *format, va_list args));
86int trio_fprintfv TRIO_PROTO((FILE *file, TRIO_CONST char *format, void **args));
87
88int trio_dprintf TRIO_PROTO((int fd, TRIO_CONST char *format, ...));
89int trio_vdprintf TRIO_PROTO((int fd, TRIO_CONST char *format, va_list args));
90int trio_dprintfv TRIO_PROTO((int fd, TRIO_CONST char *format, void **args));
91
92int trio_cprintf TRIO_PROTO((trio_outstream_t stream, trio_pointer_t closure,
93 TRIO_CONST char *format, ...));
94int trio_vcprintf TRIO_PROTO((trio_outstream_t stream, trio_pointer_t closure,
96int trio_cprintfv TRIO_PROTO((trio_outstream_t stream, trio_pointer_t closure,
97 TRIO_CONST char *format, void **args));
98
99int trio_sprintf TRIO_PROTO((char *buffer, TRIO_CONST char *format, ...));
100int trio_vsprintf TRIO_PROTO((char *buffer, TRIO_CONST char *format, va_list args));
101int trio_sprintfv TRIO_PROTO((char *buffer, TRIO_CONST char *format, void **args));
102
103int trio_snprintf TRIO_PROTO((char *buffer, size_t max, TRIO_CONST char *format, ...));
104int trio_vsnprintf TRIO_PROTO((char *buffer, size_t bufferSize, TRIO_CONST char *format,
105 va_list args));
106int trio_snprintfv TRIO_PROTO((char *buffer, size_t bufferSize, TRIO_CONST char *format,
107 void **args));
108
109int trio_snprintfcat TRIO_PROTO((char *buffer, size_t max, TRIO_CONST char *format, ...));
110int trio_vsnprintfcat TRIO_PROTO((char *buffer, size_t bufferSize, TRIO_CONST char *format,
111 va_list args));
112
113char *trio_aprintf TRIO_PROTO((TRIO_CONST char *format, ...));
114char *trio_vaprintf TRIO_PROTO((TRIO_CONST char *format, va_list args));
115
116int trio_asprintf TRIO_PROTO((char **ret, TRIO_CONST char *format, ...));
117int trio_vasprintf TRIO_PROTO((char **ret, TRIO_CONST char *format, va_list args));
118
119/*************************************************************************
120 * Scan Functions
121 */
122int trio_scanf TRIO_PROTO((TRIO_CONST char *format, ...));
123int trio_vscanf TRIO_PROTO((TRIO_CONST char *format, va_list args));
124int trio_scanfv TRIO_PROTO((TRIO_CONST char *format, void **args));
125
126int trio_fscanf TRIO_PROTO((FILE *file, TRIO_CONST char *format, ...));
127int trio_vfscanf TRIO_PROTO((FILE *file, TRIO_CONST char *format, va_list args));
128int trio_fscanfv TRIO_PROTO((FILE *file, TRIO_CONST char *format, void **args));
129
130int trio_dscanf TRIO_PROTO((int fd, TRIO_CONST char *format, ...));
131int trio_vdscanf TRIO_PROTO((int fd, TRIO_CONST char *format, va_list args));
132int trio_dscanfv TRIO_PROTO((int fd, TRIO_CONST char *format, void **args));
133
134int trio_cscanf TRIO_PROTO((trio_instream_t stream, trio_pointer_t closure,
135 TRIO_CONST char *format, ...));
136int trio_vcscanf TRIO_PROTO((trio_instream_t stream, trio_pointer_t closure,
137 TRIO_CONST char *format, va_list args));
138int trio_cscanfv TRIO_PROTO((trio_instream_t stream, trio_pointer_t closure,
139 TRIO_CONST char *format, void **args));
140
141int trio_sscanf TRIO_PROTO((TRIO_CONST char *buffer, TRIO_CONST char *format, ...));
142int trio_vsscanf TRIO_PROTO((TRIO_CONST char *buffer, TRIO_CONST char *format, va_list args));
143int trio_sscanfv TRIO_PROTO((TRIO_CONST char *buffer, TRIO_CONST char *format, void **args));
144
145/*************************************************************************
146 * Locale Functions
147 */
148void trio_locale_set_decimal_point TRIO_PROTO((char *decimalPoint));
149void trio_locale_set_thousand_separator TRIO_PROTO((char *thousandSeparator));
150void 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# undef printf
159# define printf trio_printf
160#endif
161#ifndef HAVE_VPRINTF
162# undef vprintf
163# define vprintf trio_vprintf
164#endif
165#ifndef HAVE_FPRINTF
166# undef fprintf
167# define fprintf trio_fprintf
168#endif
169#ifndef HAVE_VFPRINTF
170# undef vfprintf
171# define vfprintf trio_vfprintf
172#endif
173#ifndef HAVE_SPRINTF
174# undef sprintf
175# define sprintf trio_sprintf
176#endif
177#ifndef HAVE_VSPRINTF
178# undef vsprintf
179# define vsprintf trio_vsprintf
180#endif
181#ifndef HAVE_SNPRINTF
182# undef snprintf
183# define snprintf trio_snprintf
184#endif
185#ifndef HAVE_VSNPRINTF
186# undef vsnprintf
187# define vsnprintf trio_vsnprintf
188#endif
189#ifndef HAVE_SCANF
190# undef scanf
191# define scanf trio_scanf
192#endif
193#ifndef HAVE_VSCANF
194# undef vscanf
195# define vscanf trio_vscanf
196#endif
197#ifndef HAVE_FSCANF
198# undef fscanf
199# define fscanf trio_fscanf
200#endif
201#ifndef HAVE_VFSCANF
202# undef vfscanf
203# define vfscanf trio_vfscanf
204#endif
205#ifndef HAVE_SSCANF
206# undef sscanf
207# define sscanf trio_sscanf
208#endif
209#ifndef HAVE_VSSCANF
210# undef vsscanf
211# define vsscanf trio_vsscanf
212#endif
213/* These aren't stdio functions, but we make them look similar */
214#define dprintf trio_dprintf
215#define vdprintf trio_vdprintf
216#define aprintf trio_aprintf
217#define vaprintf trio_vaprintf
218#define asprintf trio_asprintf
219#define vasprintf trio_vasprintf
220#define dscanf trio_dscanf
221#define vdscanf trio_vdscanf
222#endif
223
224#ifdef __cplusplus
225} /* extern "C" */
226#endif
227
228#endif /* WITHOUT_TRIO */
229
230#endif /* TRIO_TRIO_H */
char * va_list
Definition: acmsvcex.h:78
@ TRIO_ERANGE
Definition: trio.h:61
@ TRIO_ERRNO
Definition: trio.h:62
@ TRIO_ETOOMANY
Definition: trio.h:57
@ TRIO_EDBLREF
Definition: trio.h:58
@ TRIO_EINVAL
Definition: trio.h:56
@ TRIO_EOF
Definition: trio.h:55
@ TRIO_ENOMEM
Definition: trio.h:60
@ TRIO_EGAP
Definition: trio.h:59
@ TRIO_ECUSTOM
Definition: trio.h:63
int trio_outstream_t TRIO_PROTO((trio_pointer_t, int))
Definition: trio.h:71
char * trio_pointer_t
Definition: triodef.h:133
#define TRIO_CONST
Definition: triodef.h:129
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
Definition: typeof.h:31
size_t bufferSize
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
Definition: gl.h:1546
GLuint buffer
Definition: glext.h:5915
static int fd
Definition: io.c:51
Definition: match.c:390
Definition: fci.c:127
Definition: parse.h:23
#define max(a, b)
Definition: svc.c:63
int ret