Copyright (C) 2000-2012 |
GNU Info (libc.info)Conversion Specifier OptionsConversion Specifier Options ---------------------------- If you define a meaning for `%A', what if the template contains `%+23A' or `%-#A'? To implement a sensible meaning for these, the handler when called needs to be able to get the options specified in the template. Both the HANDLER-FUNCTION and ARGINFO-FUNCTION accept an argument that points to a `struct printf_info', which contains information about the options appearing in an instance of the conversion specifier. This data type is declared in the header file `printf.h'. - Type: struct printf_info This structure is used to pass information about the options appearing in an instance of a conversion specifier in a `printf' template string to the handler and arginfo functions for that specifier. It contains the following members: `int prec' This is the precision specified. The value is `-1' if no precision was specified. If the precision was given as `*', the `printf_info' structure passed to the handler function contains the actual value retrieved from the argument list. But the structure passed to the arginfo function contains a value of `INT_MIN', since the actual value is not known. `int width' This is the minimum field width specified. The value is `0' if no width was specified. If the field width was given as `*', the `printf_info' structure passed to the handler function contains the actual value retrieved from the argument list. But the structure passed to the arginfo function contains a value of `INT_MIN', since the actual value is not known. `wchar_t spec' This is the conversion specifier character specified. It's stored in the structure so that you can register the same handler function for multiple characters, but still have a way to tell them apart when the handler function is called. `unsigned int is_long_double' This is a boolean that is true if the `L', `ll', or `q' type modifier was specified. For integer conversions, this indicates `long long int', as opposed to `long double' for floating point conversions. `unsigned int is_char' This is a boolean that is true if the `hh' type modifier was specified. `unsigned int is_short' This is a boolean that is true if the `h' type modifier was specified. `unsigned int is_long' This is a boolean that is true if the `l' type modifier was specified. `unsigned int alt' This is a boolean that is true if the `#' flag was specified. `unsigned int space' This is a boolean that is true if the ` ' flag was specified. `unsigned int left' This is a boolean that is true if the `-' flag was specified. `unsigned int showsign' This is a boolean that is true if the `+' flag was specified. `unsigned int group' This is a boolean that is true if the `'' flag was specified. `unsigned int extra' This flag has a special meaning depending on the context. It could be used freely by the user-defined handlers but when called from the `printf' function this variable always contains the value `0'. `unsigned int wide' This flag is set if the stream is wide oriented. `wchar_t pad' This is the character to use for padding the output to the minimum field width. The value is `'0'' if the `0' flag was specified, and `' '' otherwise. automatically generated by info2www version 1.2.2.9 |