| 714 | }; |
| 715 | |
| 716 | static NODISCARD demangle_status parser_hex_nibbles(struct parser *parser, struct buf *buf) { |
| 717 | size_t start = parser->next; |
| 718 | for (;;) { |
| 719 | uint8_t ch = parser_next(parser); |
| 720 | if (ch == '_') { |
| 721 | break; |
| 722 | } |
| 723 | if (!(('0' <= ch && ch <= '9') || ('a' <= ch && ch <= 'f'))) { |
| 724 | return DemangleInvalid; |
| 725 | } |
| 726 | } |
| 727 | buf->start = parser->sym + start; |
| 728 | buf->len = parser->next - start - 1; // skip final _ |
| 729 | return DemangleOk; |
| 730 | } |
| 731 | |
| 732 | static NODISCARD demangle_status parser_digit_10(struct parser *parser, uint8_t *out) { |
| 733 | uint8_t ch = parser_peek(parser); |
nothing calls this directly
no test coverage detected