ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

trio.h
Go to the documentation of this file.
00001 /*************************************************************************
00002  *
00003  * $Id$
00004  *
00005  * Copyright (C) 1998 Bjorn Reese and Daniel Stenberg.
00006  *
00007  * Permission to use, copy, modify, and distribute this software for any
00008  * purpose with or without fee is hereby granted, provided that the above
00009  * copyright notice and this permission notice appear in all copies.
00010  *
00011  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
00012  * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
00013  * MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND
00014  * CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER.
00015  *
00016  *************************************************************************
00017  *
00018  * http://ctrio.sourceforge.net/
00019  *
00020  ************************************************************************/
00021 
00022 #ifndef TRIO_TRIO_H
00023 #define TRIO_TRIO_H
00024 
00025 #if !defined(WITHOUT_TRIO)
00026 
00027 /*
00028  * Use autoconf defines if present. Packages using trio must define
00029  * HAVE_CONFIG_H as a compiler option themselves.
00030  */
00031 #if defined(HAVE_CONFIG_H)
00032 # include <config.h>
00033 #endif
00034 
00035 #include "triodef.h"
00036 
00037 #include <stdio.h>
00038 #include <stdlib.h>
00039 #if defined(TRIO_COMPILER_ANCIENT)
00040 # include <varargs.h>
00041 #else
00042 # include <stdarg.h>
00043 #endif
00044 
00045 #ifdef __cplusplus
00046 extern "C" {
00047 #endif
00048 
00049 /*
00050  * Error codes.
00051  *
00052  * Remember to add a textual description to trio_strerror.
00053  */
00054 enum {
00055   TRIO_EOF      = 1,
00056   TRIO_EINVAL   = 2,
00057   TRIO_ETOOMANY = 3,
00058   TRIO_EDBLREF  = 4,
00059   TRIO_EGAP     = 5,
00060   TRIO_ENOMEM   = 6,
00061   TRIO_ERANGE   = 7,
00062   TRIO_ERRNO    = 8,
00063   TRIO_ECUSTOM  = 9
00064 };
00065 
00066 /* Error macros */
00067 #define TRIO_ERROR_CODE(x) ((-(x)) & 0x00FF)
00068 #define TRIO_ERROR_POSITION(x) ((-(x)) >> 8)
00069 #define TRIO_ERROR_NAME(x) trio_strerror(x)
00070 
00071 typedef int (*trio_outstream_t) TRIO_PROTO((trio_pointer_t, int));
00072 typedef int (*trio_instream_t) TRIO_PROTO((trio_pointer_t));
00073 
00074 TRIO_CONST char *trio_strerror TRIO_PROTO((int));
00075 
00076 /*************************************************************************
00077  * Print Functions
00078  */
00079 
00080 int trio_printf TRIO_PROTO((TRIO_CONST char *format, ...));
00081 int trio_vprintf TRIO_PROTO((TRIO_CONST char *format, va_list args));
00082 int trio_printfv TRIO_PROTO((TRIO_CONST char *format, void **args));
00083 
00084 int trio_fprintf TRIO_PROTO((FILE *file, TRIO_CONST char *format, ...));
00085 int trio_vfprintf TRIO_PROTO((FILE *file, TRIO_CONST char *format, va_list args));
00086 int trio_fprintfv TRIO_PROTO((FILE *file, TRIO_CONST char *format, void **args));
00087 
00088 int trio_dprintf TRIO_PROTO((int fd, TRIO_CONST char *format, ...));
00089 int trio_vdprintf TRIO_PROTO((int fd, TRIO_CONST char *format, va_list args));
00090 int trio_dprintfv TRIO_PROTO((int fd, TRIO_CONST char *format, void **args));
00091 
00092 int trio_cprintf TRIO_PROTO((trio_outstream_t stream, trio_pointer_t closure,
00093                  TRIO_CONST char *format, ...));
00094 int trio_vcprintf TRIO_PROTO((trio_outstream_t stream, trio_pointer_t closure,
00095                   TRIO_CONST char *format, va_list args));
00096 int trio_cprintfv TRIO_PROTO((trio_outstream_t stream, trio_pointer_t closure,
00097                   TRIO_CONST char *format, void **args));
00098 
00099 int trio_sprintf TRIO_PROTO((char *buffer, TRIO_CONST char *format, ...));
00100 int trio_vsprintf TRIO_PROTO((char *buffer, TRIO_CONST char *format, va_list args));
00101 int trio_sprintfv TRIO_PROTO((char *buffer, TRIO_CONST char *format, void **args));
00102 
00103 int trio_snprintf TRIO_PROTO((char *buffer, size_t max, TRIO_CONST char *format, ...));
00104 int trio_vsnprintf TRIO_PROTO((char *buffer, size_t bufferSize, TRIO_CONST char *format,
00105            va_list args));
00106 int trio_snprintfv TRIO_PROTO((char *buffer, size_t bufferSize, TRIO_CONST char *format,
00107            void **args));
00108 
00109 int trio_snprintfcat TRIO_PROTO((char *buffer, size_t max, TRIO_CONST char *format, ...));
00110 int trio_vsnprintfcat TRIO_PROTO((char *buffer, size_t bufferSize, TRIO_CONST char *format,
00111                       va_list args));
00112 
00113 char *trio_aprintf TRIO_PROTO((TRIO_CONST char *format, ...));
00114 char *trio_vaprintf TRIO_PROTO((TRIO_CONST char *format, va_list args));
00115 
00116 int trio_asprintf TRIO_PROTO((char **ret, TRIO_CONST char *format, ...));
00117 int trio_vasprintf TRIO_PROTO((char **ret, TRIO_CONST char *format, va_list args));
00118 
00119 /*************************************************************************
00120  * Scan Functions
00121  */
00122 int trio_scanf TRIO_PROTO((TRIO_CONST char *format, ...));
00123 int trio_vscanf TRIO_PROTO((TRIO_CONST char *format, va_list args));
00124 int trio_scanfv TRIO_PROTO((TRIO_CONST char *format, void **args));
00125 
00126 int trio_fscanf TRIO_PROTO((FILE *file, TRIO_CONST char *format, ...));
00127 int trio_vfscanf TRIO_PROTO((FILE *file, TRIO_CONST char *format, va_list args));
00128 int trio_fscanfv TRIO_PROTO((FILE *file, TRIO_CONST char *format, void **args));
00129 
00130 int trio_dscanf TRIO_PROTO((int fd, TRIO_CONST char *format, ...));
00131 int trio_vdscanf TRIO_PROTO((int fd, TRIO_CONST char *format, va_list args));
00132 int trio_dscanfv TRIO_PROTO((int fd, TRIO_CONST char *format, void **args));
00133 
00134 int trio_cscanf TRIO_PROTO((trio_instream_t stream, trio_pointer_t closure,
00135                 TRIO_CONST char *format, ...));
00136 int trio_vcscanf TRIO_PROTO((trio_instream_t stream, trio_pointer_t closure,
00137                  TRIO_CONST char *format, va_list args));
00138 int trio_cscanfv TRIO_PROTO((trio_instream_t stream, trio_pointer_t closure,
00139                  TRIO_CONST char *format, void **args));
00140 
00141 int trio_sscanf TRIO_PROTO((TRIO_CONST char *buffer, TRIO_CONST char *format, ...));
00142 int trio_vsscanf TRIO_PROTO((TRIO_CONST char *buffer, TRIO_CONST char *format, va_list args));
00143 int trio_sscanfv TRIO_PROTO((TRIO_CONST char *buffer, TRIO_CONST char *format, void **args));
00144 
00145 /*************************************************************************
00146  * Locale Functions
00147  */
00148 void trio_locale_set_decimal_point TRIO_PROTO((char *decimalPoint));
00149 void trio_locale_set_thousand_separator TRIO_PROTO((char *thousandSeparator));
00150 void trio_locale_set_grouping TRIO_PROTO((char *grouping));
00151 
00152 /*************************************************************************
00153  * Renaming
00154  */
00155 #ifdef TRIO_REPLACE_STDIO
00156 /* Replace the <stdio.h> functions */
00157 #ifndef HAVE_PRINTF
00158 # define printf trio_printf
00159 #endif
00160 #ifndef HAVE_VPRINTF
00161 # define vprintf trio_vprintf
00162 #endif
00163 #ifndef HAVE_FPRINTF
00164 # define fprintf trio_fprintf
00165 #endif
00166 #ifndef HAVE_VFPRINTF
00167 # define vfprintf trio_vfprintf
00168 #endif
00169 #ifndef HAVE_SPRINTF
00170 # define sprintf trio_sprintf
00171 #endif
00172 #ifndef HAVE_VSPRINTF
00173 # define vsprintf trio_vsprintf
00174 #endif
00175 #ifndef HAVE_SNPRINTF
00176 # define snprintf trio_snprintf
00177 #endif
00178 #ifndef HAVE_VSNPRINTF
00179 # define vsnprintf trio_vsnprintf
00180 #endif
00181 #ifndef HAVE_SCANF
00182 # define scanf trio_scanf
00183 #endif
00184 #ifndef HAVE_VSCANF
00185 # define vscanf trio_vscanf
00186 #endif
00187 #ifndef HAVE_FSCANF
00188 # define fscanf trio_fscanf
00189 #endif
00190 #ifndef HAVE_VFSCANF
00191 # define vfscanf trio_vfscanf
00192 #endif
00193 #ifndef HAVE_SSCANF
00194 # define sscanf trio_sscanf
00195 #endif
00196 #ifndef HAVE_VSSCANF
00197 # define vsscanf trio_vsscanf
00198 #endif
00199 /* These aren't stdio functions, but we make them look similar */
00200 #define dprintf trio_dprintf
00201 #define vdprintf trio_vdprintf
00202 #define aprintf trio_aprintf
00203 #define vaprintf trio_vaprintf
00204 #define asprintf trio_asprintf
00205 #define vasprintf trio_vasprintf
00206 #define dscanf trio_dscanf
00207 #define vdscanf trio_vdscanf
00208 #endif
00209 
00210 #ifdef __cplusplus
00211 } /* extern "C" */
00212 #endif
00213 
00214 #endif /* WITHOUT_TRIO */
00215 
00216 #endif /* TRIO_TRIO_H */

Generated on Sat May 26 2012 04:18:28 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.