File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / libxml2 / trio.h
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Sun Jun 15 19:53:28 2014 UTC (9 years, 11 months ago) by misho
Branches: libxml2, MAIN
CVS tags: v2_9_1p0, v2_9_1, HEAD
libxml2 2.9.1

    1: /*************************************************************************
    2:  *
    3:  * $Id: trio.h,v 1.1.1.2 2014/06/15 19:53:28 misho Exp $
    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(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
   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>