/builds/xfbs/passgen/include/passgen/error.h
Line | Count | Source |
1 | | #pragma once |
2 | | #include <passgen/container/array.h> |
3 | | |
4 | | typedef struct { |
5 | | const char *file; |
6 | | size_t line; |
7 | | } passgen_error_source; |
8 | | |
9 | | typedef struct { |
10 | | size_t codepoint; |
11 | | size_t byte; |
12 | | } passgen_error_offset; |
13 | | |
14 | | /// An error occured while parsing. |
15 | | typedef struct { |
16 | | const char *message; |
17 | | // TODO: rename start |
18 | | passgen_error_offset offset; |
19 | | // TODO: rename end |
20 | | passgen_error_offset end; |
21 | | passgen_error_source source; |
22 | | passgen_array causes; |
23 | | } passgen_error; |
24 | | |
25 | | void passgen_error_init_raw(passgen_error *error, const char *message); |
26 | | |
27 | | void passgen_error_free(passgen_error *error); |
28 | | |
29 | | void passgen_error_print(passgen_error *error, const char *pattern); |
30 | | |
31 | | void passgen_error_cause_add(passgen_error *error, const passgen_error *cause); |
32 | | |
33 | | void passgen_error_source_set(passgen_error *error, const char *file, size_t line); |
34 | | |
35 | | void passgen_error_offset_set(passgen_error *error, size_t codepoint, size_t byte); |
36 | | |
37 | | #define passgen_error_init(error, message) \ |
38 | 10.6k | do { \ |
39 | 10.6k | passgen_error_init_raw(error, message); \ |
40 | 10.6k | passgen_error_source_set(error, __FILE__, __LINE__); \ |
41 | 10.6k | } while(false) |