00001 /* 00002 ******************************************************************************* 00003 * 00004 * Copyright (C) 1998-1999, International Business Machines 00005 * Corporation and others. All Rights Reserved. 00006 * 00007 ******************************************************************************* 00008 * 00009 * File uprintf.h 00010 * 00011 * Modification History: 00012 * 00013 * Date Name Description 00014 * 11/19/98 stephen Creation. 00015 * 03/12/99 stephen Modified for new C API. 00016 ******************************************************************************* 00017 */ 00018 00019 #ifndef UPRINTF_H 00020 #define UPRINTF_H 00021 00022 #include "unicode/utypes.h" 00023 #include "unicode/ustdio.h" 00024 #include "ufmt_cmn.h" 00025 00029 struct u_printf_spec_info { 00030 UChar fSpec; /* Conversion specification */ 00031 00032 int32_t fPrecision; /* Precision */ 00033 int32_t fWidth; /* Width */ 00034 00035 UChar fPadChar; /* Padding character */ 00036 00037 UBool fAlt; /* # flag */ 00038 UBool fSpace; /* Space flag */ 00039 UBool fLeft; /* - flag */ 00040 UBool fShowSign; /* + flag */ 00041 UBool fZero; /* 0 flag */ 00042 00043 UBool fIsLongDouble; /* L flag */ 00044 UBool fIsShort; /* h flag */ 00045 UBool fIsLong; /* l flag */ 00046 UBool fIsLongLong; /* ll flag */ 00047 }; 00048 typedef struct u_printf_spec_info u_printf_spec_info; 00049 00062 typedef int32_t (*u_printf_info) (const u_printf_spec_info *info, 00063 int32_t *argtypes, 00064 int32_t n); 00065 00076 typedef int32_t (*u_printf_handler) (UFILE *stream, 00077 const u_printf_spec_info *info, 00078 const ufmt_args *args); 00079 00089 int32_t 00090 u_printf_register_handler(UChar spec, 00091 u_printf_info info, 00092 u_printf_handler handler); 00093 00094 #endif 00095