Compy 0.2.0
A lightweight RTSP 1.0 server library for embedded systems
Loading...
Searching...
No Matches
parsing.h
1#pragma once
2
3#include <compy/types/error.h>
4
5#include <stdbool.h>
6#include <stddef.h>
7#include <stdint.h>
8
9#include <datatype99.h>
10#include <slice99.h>
11
12#define MATCH(parse_expr) \
13 do { \
14 const Compy_ParseResult parse_res_var = parse_expr; \
15 \
16 match(parse_res_var) { \
17 of(Compy_ParseResult_Success, status) { \
18 match(*status) { \
19 of(Compy_ParseStatus_Complete, offset) input = \
20 CharSlice99_advance(input, *offset); \
21 otherwise return parse_res_var; \
22 } \
23 } \
24 of(Compy_ParseResult_Failure, err) { \
25 return Compy_ParseResult_Failure(*err); \
26 } \
27 } \
28 } while (0)
29
33Compy_ParseResult compy_match_until(
34 CharSlice99 input, bool (*matcher)(char c, void *ctx), void *ctx);
35
36Compy_ParseResult
37compy_match_until_str(CharSlice99 input, const char *restrict str);
38
39Compy_ParseResult compy_match_until_crlf(CharSlice99 input);
40Compy_ParseResult compy_match_until_double_crlf(CharSlice99 input);
41Compy_ParseResult compy_match_char(CharSlice99 input, char c);
42Compy_ParseResult compy_match_str(CharSlice99 input, const char *restrict str);
43Compy_ParseResult compy_match_whitespaces(CharSlice99 input);
44Compy_ParseResult compy_match_non_whitespaces(CharSlice99 input);
45Compy_ParseResult compy_match_numeric(CharSlice99 input);
46Compy_ParseResult compy_match_ident(CharSlice99 input);
47Compy_ParseResult compy_match_header_name(CharSlice99 input);
Possible parsing errors.