Coverage Report

Created: 2024-05-03 06:05

/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)