Function report |
Source Code:lib\vsprintf.c |
Create Date:2022-07-28 06:12:23 |
Last Modify:2022-05-21 09:47:42 | Copyright©Brick |
home page | Tree |
Annotation kernel can get tool activity | Download SCCT | Chinese |
Name:Helper function to decode printf style format
Proto:static __attribute__((__noinline__)) int format_decode(const char *fmt, struct printf_spec *spec)
Type:int
Parameter:
Type | Parameter | Name |
---|---|---|
const char * | fmt | |
struct printf_spec * | spec |
2288 | If format_type enum == FORMAT_TYPE_WIDTH Then |
2289 | If width of output field < 0 Then |
2291 | flags to number() |= left justified |
2294 | Go to precision |
2298 | If format_type enum == FORMAT_TYPE_PRECISION Then |
2299 | If # of digits/chars < 0 Then # of digits/chars = 0 |
2303 | Go to qualifier |
2310 | If fmt == '%' Then Break |
2319 | flags to number() = 0 |
2321 | When 1 cycle |
2322 | bool found = true |
2324 | ++fmt |
2327 | Case fmt == '-' |
2327 | flags to number() |= left justified |
2327 | Break |
2328 | Case fmt == '+' |
2328 | flags to number() |= show plus |
2328 | Break |
2329 | Case fmt == ' ' |
2329 | flags to number() |= space if plus |
2329 | Break |
2330 | Case fmt == '#' |
2330 | Break |
2331 | Case fmt == '0' |
2331 | Break |
2332 | Default |
2332 | found = false |
2335 | If Not found Then Break |
2340 | width of output field = -1 |
2344 | Else if fmt == '*' Then |
2350 | precision : |
2352 | # of digits/chars = -1 |
2353 | If fmt == '.' Then |
2354 | ++fmt |
2357 | If # of digits/chars < 0 Then # of digits/chars = 0 |
2359 | Else if fmt == '*' Then |
2366 | qualifier : |
2368 | qualifier = 0 |
2369 | If fmt == 'h' || Fast implementation of tolower() for internal usage. Do not use in your* code. == 'l' || fmt == 'z' || fmt == 't' Then |
2372 | If Value for the false possibility is greater at compile time(qualifier == * fmt) Then |
2384 | number base, 8, 10 or 16 only = 10 |
2386 | Case fmt == 'c' |
2387 | format_type enum = FORMAT_TYPE_CHAR |
2390 | Case fmt == 's' |
2391 | format_type enum = FORMAT_TYPE_STR |
2394 | Case fmt == 'p' |
2395 | format_type enum = FORMAT_TYPE_PTR |
2398 | Case fmt == '%' |
2403 | Case fmt == 'o' |
2404 | number base, 8, 10 or 16 only = 8 |
2405 | Break |
2407 | Case fmt == 'x' |
2411 | Case fmt == 'X' |
2412 | number base, 8, 10 or 16 only = 16 |
2413 | Break |
2415 | Case fmt == 'd' |
2416 | Case fmt == 'i' |
2418 | Case fmt == 'u' |
2419 | Break |
2421 | Case fmt == 'n' |
2429 | Default |
2435 | If qualifier == 'L' Then format_type enum = FORMAT_TYPE_LONG_LONG |
2437 | Else if qualifier == 'l' Then |
2440 | Else if qualifier == 'z' Then |
2442 | Else if qualifier == 't' Then |
2444 | Else if qualifier == 'H' Then |
2447 | Else if qualifier == 'h' Then |
2450 | Else |
Name | Describe |
---|---|
vsnprintf | vsnprintf - Format a string and place it in a buffer*@buf: The buffer to place the result into*@size: The size of the buffer, including the trailing null space*@fmt: The format string to use*@args: Arguments for the format string* This function generally |
Source code conversion tool public plug-in interface | X |
---|---|
Support c/c++/esqlc/java Oracle/Informix/Mysql Plug-in can realize: logical Report Code generation and batch code conversion |