Eneboo - Documentación para desarrolladores
|
00001 /************************************************************************* 00002 * 00003 * $Id$ 00004 * 00005 * Copyright (C) 2000 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 * Private functions, types, etc. used for callback functions. 00019 * 00020 * The ref pointer is an opaque type and should remain as such. 00021 * Private data must only be accessible through the getter and 00022 * setter functions. 00023 * 00024 ************************************************************************/ 00025 00026 #ifndef TRIO_TRIOP_H 00027 #define TRIO_TRIOP_H 00028 00029 #include "triodef.h" 00030 00031 #include <stdlib.h> 00032 #if defined(TRIO_COMPILER_ANCIENT) 00033 # include <varargs.h> 00034 #else 00035 # include <stdarg.h> 00036 #endif 00037 00038 #ifdef __cplusplus 00039 extern "C" { 00040 #endif 00041 00042 #ifndef TRIO_C99 00043 # define TRIO_C99 1 00044 #endif 00045 #ifndef TRIO_BSD 00046 # define TRIO_BSD 1 00047 #endif 00048 #ifndef TRIO_GNU 00049 # define TRIO_GNU 1 00050 #endif 00051 #ifndef TRIO_MISC 00052 # define TRIO_MISC 1 00053 #endif 00054 #ifndef TRIO_UNIX98 00055 # define TRIO_UNIX98 1 00056 #endif 00057 #ifndef TRIO_MICROSOFT 00058 # define TRIO_MICROSOFT 1 00059 #endif 00060 #ifndef TRIO_EXTENSION 00061 # define TRIO_EXTENSION 1 00062 #endif 00063 #ifndef TRIO_WIDECHAR /* Does not work yet. Do not enable */ 00064 # define TRIO_WIDECHAR 0 00065 #endif 00066 #ifndef TRIO_ERRORS 00067 # define TRIO_ERRORS 1 00068 #endif 00069 00070 #ifndef TRIO_MALLOC 00071 # define TRIO_MALLOC(n) malloc(n) 00072 #endif 00073 #ifndef TRIO_REALLOC 00074 # define TRIO_REALLOC(x,n) realloc((x),(n)) 00075 #endif 00076 #ifndef TRIO_FREE 00077 # define TRIO_FREE(x) free(x) 00078 #endif 00079 00080 00081 /************************************************************************* 00082 * User-defined specifiers 00083 */ 00084 00085 typedef int (*trio_callback_t) TRIO_PROTO((trio_pointer_t)); 00086 00087 trio_pointer_t trio_register TRIO_PROTO((trio_callback_t callback, const char *name)); 00088 void trio_unregister TRIO_PROTO((trio_pointer_t handle)); 00089 00090 TRIO_CONST char *trio_get_format TRIO_PROTO((trio_pointer_t ref)); 00091 trio_pointer_t trio_get_argument TRIO_PROTO((trio_pointer_t ref)); 00092 00093 /* Modifiers */ 00094 int trio_get_width TRIO_PROTO((trio_pointer_t ref)); 00095 void trio_set_width TRIO_PROTO((trio_pointer_t ref, int width)); 00096 int trio_get_precision TRIO_PROTO((trio_pointer_t ref)); 00097 void trio_set_precision TRIO_PROTO((trio_pointer_t ref, int precision)); 00098 int trio_get_base TRIO_PROTO((trio_pointer_t ref)); 00099 void trio_set_base TRIO_PROTO((trio_pointer_t ref, int base)); 00100 int trio_get_padding TRIO_PROTO((trio_pointer_t ref)); 00101 void trio_set_padding TRIO_PROTO((trio_pointer_t ref, int is_padding)); 00102 int trio_get_short TRIO_PROTO((trio_pointer_t ref)); /* h */ 00103 void trio_set_shortshort TRIO_PROTO((trio_pointer_t ref, int is_shortshort)); 00104 int trio_get_shortshort TRIO_PROTO((trio_pointer_t ref)); /* hh */ 00105 void trio_set_short TRIO_PROTO((trio_pointer_t ref, int is_short)); 00106 int trio_get_long TRIO_PROTO((trio_pointer_t ref)); /* l */ 00107 void trio_set_long TRIO_PROTO((trio_pointer_t ref, int is_long)); 00108 int trio_get_longlong TRIO_PROTO((trio_pointer_t ref)); /* ll */ 00109 void trio_set_longlong TRIO_PROTO((trio_pointer_t ref, int is_longlong)); 00110 int trio_get_longdouble TRIO_PROTO((trio_pointer_t ref)); /* L */ 00111 void trio_set_longdouble TRIO_PROTO((trio_pointer_t ref, int is_longdouble)); 00112 int trio_get_alternative TRIO_PROTO((trio_pointer_t ref)); /* # */ 00113 void trio_set_alternative TRIO_PROTO((trio_pointer_t ref, int is_alternative)); 00114 int trio_get_alignment TRIO_PROTO((trio_pointer_t ref)); /* - */ 00115 void trio_set_alignment TRIO_PROTO((trio_pointer_t ref, int is_leftaligned)); 00116 int trio_get_spacing TRIO_PROTO((trio_pointer_t ref)); /* TRIO_PROTO((space) */ 00117 void trio_set_spacing TRIO_PROTO((trio_pointer_t ref, int is_space)); 00118 int trio_get_sign TRIO_PROTO((trio_pointer_t ref)); /* + */ 00119 void trio_set_sign TRIO_PROTO((trio_pointer_t ref, int is_showsign)); 00120 int trio_get_quote TRIO_PROTO((trio_pointer_t ref)); /* ' */ 00121 void trio_set_quote TRIO_PROTO((trio_pointer_t ref, int is_quote)); 00122 int trio_get_upper TRIO_PROTO((trio_pointer_t ref)); 00123 void trio_set_upper TRIO_PROTO((trio_pointer_t ref, int is_upper)); 00124 #if TRIO_C99 00125 int trio_get_largest TRIO_PROTO((trio_pointer_t ref)); /* j */ 00126 void trio_set_largest TRIO_PROTO((trio_pointer_t ref, int is_largest)); 00127 int trio_get_ptrdiff TRIO_PROTO((trio_pointer_t ref)); /* t */ 00128 void trio_set_ptrdiff TRIO_PROTO((trio_pointer_t ref, int is_ptrdiff)); 00129 int trio_get_size TRIO_PROTO((trio_pointer_t ref)); /* z / Z */ 00130 void trio_set_size TRIO_PROTO((trio_pointer_t ref, int is_size)); 00131 #endif 00132 00133 /* Printing */ 00134 int trio_print_ref TRIO_PROTO((trio_pointer_t ref, const char *format, ...)); 00135 int trio_vprint_ref TRIO_PROTO((trio_pointer_t ref, const char *format, va_list args)); 00136 int trio_printv_ref TRIO_PROTO((trio_pointer_t ref, const char *format, trio_pointer_t *args)); 00137 00138 void trio_print_int TRIO_PROTO((trio_pointer_t ref, int number)); 00139 void trio_print_uint TRIO_PROTO((trio_pointer_t ref, unsigned int number)); 00140 /* void trio_print_long TRIO_PROTO((trio_pointer_t ref, long number)); */ 00141 /* void trio_print_ulong TRIO_PROTO((trio_pointer_t ref, unsigned long number)); */ 00142 void trio_print_double TRIO_PROTO((trio_pointer_t ref, double number)); 00143 void trio_print_string TRIO_PROTO((trio_pointer_t ref, char *string)); 00144 void trio_print_pointer TRIO_PROTO((trio_pointer_t ref, trio_pointer_t pointer)); 00145 00146 #ifdef __cplusplus 00147 } /* extern "C" */ 00148 #endif 00149 00150 #endif /* TRIO_TRIOP_H */