| 207 | } |
| 208 | |
| 209 | static int ParseFlags(const char* format, PrintSpecification::Flags* flags) |
| 210 | { |
| 211 | const char* f = format; |
| 212 | while (*f != '\0') { |
| 213 | switch (*f) { |
| 214 | case '-': |
| 215 | flags->left = true; |
| 216 | break; |
| 217 | case '+': |
| 218 | flags->sign = true; |
| 219 | break; |
| 220 | case ' ': |
| 221 | flags->space = true; |
| 222 | break; |
| 223 | case '#': |
| 224 | flags->sharp = true; |
| 225 | break; |
| 226 | case '0': |
| 227 | flags->zero = true; |
| 228 | break; |
| 229 | default: |
| 230 | return f - format; |
| 231 | } |
| 232 | ++f; |
| 233 | } |
| 234 | return f - format; |
| 235 | } |
| 236 | |
| 237 | // The width and precision of print allow '*' |
| 238 | static int ParsePrintWidth(const char* format, int* value) |