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