Home | History | Annotate | Download | only in libxml2
      1 /*************************************************************************
      2  *
      3  * $Id$
      4  *
      5  * Copyright (C) 2000 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  * Private functions, types, etc. used for callback functions.
     19  *
     20  * The ref pointer is an opaque type and should remain as such.
     21  * Private data must only be accessible through the getter and
     22  * setter functions.
     23  *
     24  ************************************************************************/
     25 
     26 #ifndef TRIO_TRIOP_H
     27 #define TRIO_TRIOP_H
     28 
     29 #include "triodef.h"
     30 
     31 #include <stdlib.h>
     32 #if defined(TRIO_COMPILER_ANCIENT)
     33 # include <varargs.h>
     34 #else
     35 # include <stdarg.h>
     36 #endif
     37 
     38 #ifdef __cplusplus
     39 extern "C" {
     40 #endif
     41 
     42 #ifndef TRIO_C99
     43 # define TRIO_C99 1
     44 #endif
     45 #ifndef TRIO_BSD
     46 # define TRIO_BSD 1
     47 #endif
     48 #ifndef TRIO_GNU
     49 # define TRIO_GNU 1
     50 #endif
     51 #ifndef TRIO_MISC
     52 # define TRIO_MISC 1
     53 #endif
     54 #ifndef TRIO_UNIX98
     55 # define TRIO_UNIX98 1
     56 #endif
     57 #ifndef TRIO_MICROSOFT
     58 # define TRIO_MICROSOFT 1
     59 #endif
     60 #ifndef TRIO_EXTENSION
     61 # define TRIO_EXTENSION 1
     62 #endif
     63 #ifndef TRIO_WIDECHAR /* Does not work yet. Do not enable */
     64 # define TRIO_WIDECHAR 0
     65 #endif
     66 #ifndef TRIO_ERRORS
     67 # define TRIO_ERRORS 1
     68 #endif
     69 
     70 #ifndef TRIO_MALLOC
     71 # define TRIO_MALLOC(n) malloc(n)
     72 #endif
     73 #ifndef TRIO_REALLOC
     74 # define TRIO_REALLOC(x,n) realloc((x),(n))
     75 #endif
     76 #ifndef TRIO_FREE
     77 # define TRIO_FREE(x) free(x)
     78 #endif
     79 
     80 
     81 /*************************************************************************
     82  * User-defined specifiers
     83  */
     84 
     85 typedef int (*trio_callback_t) TRIO_PROTO((trio_pointer_t));
     86 
     87 trio_pointer_t trio_register TRIO_PROTO((trio_callback_t callback, const char *name));
     88 void trio_unregister TRIO_PROTO((trio_pointer_t handle));
     89 
     90 TRIO_CONST char *trio_get_format TRIO_PROTO((trio_pointer_t ref));
     91 trio_pointer_t trio_get_argument TRIO_PROTO((trio_pointer_t ref));
     92 
     93 /* Modifiers */
     94 int  trio_get_width TRIO_PROTO((trio_pointer_t ref));
     95 void trio_set_width TRIO_PROTO((trio_pointer_t ref, int width));
     96 int  trio_get_precision TRIO_PROTO((trio_pointer_t ref));
     97 void trio_set_precision TRIO_PROTO((trio_pointer_t ref, int precision));
     98 int  trio_get_base TRIO_PROTO((trio_pointer_t ref));
     99 void trio_set_base TRIO_PROTO((trio_pointer_t ref, int base));
    100 int  trio_get_padding TRIO_PROTO((trio_pointer_t ref));
    101 void trio_set_padding TRIO_PROTO((trio_pointer_t ref, int is_padding));
    102 int  trio_get_short TRIO_PROTO((trio_pointer_t ref)); /* h */
    103 void trio_set_shortshort TRIO_PROTO((trio_pointer_t ref, int is_shortshort));
    104 int  trio_get_shortshort TRIO_PROTO((trio_pointer_t ref)); /* hh */
    105 void trio_set_short TRIO_PROTO((trio_pointer_t ref, int is_short));
    106 int  trio_get_long TRIO_PROTO((trio_pointer_t ref)); /* l */
    107 void trio_set_long TRIO_PROTO((trio_pointer_t ref, int is_long));
    108 int  trio_get_longlong TRIO_PROTO((trio_pointer_t ref)); /* ll */
    109 void trio_set_longlong TRIO_PROTO((trio_pointer_t ref, int is_longlong));
    110 int  trio_get_longdouble TRIO_PROTO((trio_pointer_t ref)); /* L */
    111 void trio_set_longdouble TRIO_PROTO((trio_pointer_t ref, int is_longdouble));
    112 int  trio_get_alternative TRIO_PROTO((trio_pointer_t ref)); /* # */
    113 void trio_set_alternative TRIO_PROTO((trio_pointer_t ref, int is_alternative));
    114 int  trio_get_alignment TRIO_PROTO((trio_pointer_t ref)); /* - */
    115 void trio_set_alignment TRIO_PROTO((trio_pointer_t ref, int is_leftaligned));
    116 int  trio_get_spacing TRIO_PROTO((trio_pointer_t ref)); /*  TRIO_PROTO((space) */
    117 void trio_set_spacing TRIO_PROTO((trio_pointer_t ref, int is_space));
    118 int  trio_get_sign TRIO_PROTO((trio_pointer_t ref)); /* + */
    119 void trio_set_sign TRIO_PROTO((trio_pointer_t ref, int is_showsign));
    120 int  trio_get_quote TRIO_PROTO((trio_pointer_t ref)); /* ' */
    121 void trio_set_quote TRIO_PROTO((trio_pointer_t ref, int is_quote));
    122 int  trio_get_upper TRIO_PROTO((trio_pointer_t ref));
    123 void trio_set_upper TRIO_PROTO((trio_pointer_t ref, int is_upper));
    124 #if TRIO_C99
    125 int  trio_get_largest TRIO_PROTO((trio_pointer_t ref)); /* j */
    126 void trio_set_largest TRIO_PROTO((trio_pointer_t ref, int is_largest));
    127 int  trio_get_ptrdiff TRIO_PROTO((trio_pointer_t ref)); /* t */
    128 void trio_set_ptrdiff TRIO_PROTO((trio_pointer_t ref, int is_ptrdiff));
    129 int  trio_get_size TRIO_PROTO((trio_pointer_t ref)); /* z / Z */
    130 void trio_set_size TRIO_PROTO((trio_pointer_t ref, int is_size));
    131 #endif
    132 
    133 /* Printing */
    134 int trio_print_ref TRIO_PROTO((trio_pointer_t ref, const char *format, ...));
    135 int trio_vprint_ref TRIO_PROTO((trio_pointer_t ref, const char *format, va_list args));
    136 int trio_printv_ref TRIO_PROTO((trio_pointer_t ref, const char *format, trio_pointer_t *args));
    137 
    138 void trio_print_int TRIO_PROTO((trio_pointer_t ref, int number));
    139 void trio_print_uint TRIO_PROTO((trio_pointer_t ref, unsigned int number));
    140 /*  void trio_print_long TRIO_PROTO((trio_pointer_t ref, long number)); */
    141 /*  void trio_print_ulong TRIO_PROTO((trio_pointer_t ref, unsigned long number)); */
    142 void trio_print_double TRIO_PROTO((trio_pointer_t ref, double number));
    143 void trio_print_string TRIO_PROTO((trio_pointer_t ref, char *string));
    144 void trio_print_pointer TRIO_PROTO((trio_pointer_t ref, trio_pointer_t pointer));
    145 
    146 #ifdef __cplusplus
    147 } /* extern "C" */
    148 #endif
    149 
    150 #endif /* TRIO_TRIOP_H */
    151