Cthulhu  0.2.10
Cthulhu compiler collection
scan.h
Go to the documentation of this file.
1 // SPDX-License-Identifier: LGPL-3.0-only
2 
3 #pragma once
4 
5 #include <ctu_broker_api.h>
6 
7 #include <stddef.h>
8 
9 typedef struct logger_t logger_t;
10 typedef struct arena_t arena_t;
11 typedef struct scan_t scan_t;
12 typedef struct where_t where_t;
13 
14 typedef struct vector_t vector_t;
15 
17 
18 typedef struct scan_context_t
19 {
21 
25 
26  char user[];
28 
29 CT_BROKER_API logger_t *ctx_get_logger(const scan_t *scan);
30 CT_BROKER_API arena_t *ctx_get_arena(const scan_t *scan);
31 CT_BROKER_API arena_t *ctx_get_string_arena(const scan_t *scan);
32 CT_BROKER_API arena_t *ctx_get_ast_arena(const scan_t *scan);
33 
34 // alias for vector_init(init, scan_get_arena(scan))
35 CT_BROKER_API vector_t *ctx_vector_init(void *init, const scan_t *scan);
36 
37 // alias for vector_new(size, scan_get_arena(scan))
38 CT_BROKER_API vector_t *ctx_vector_new(size_t size, const scan_t *scan);
39 
40 // alias for vector_of(type, scan_get_arena(scan))
41 CT_BROKER_API vector_t *ctx_vector_of(size_t size, const scan_t *scan);
42 
43 CT_BROKER_API void *ctx_get_user(const scan_t *scan);
44 
45 CT_BROKER_API void ctx_error(const where_t *where, const void *state, const scan_t *scan, const char *msg);
46 CT_BROKER_API void ctx_unknown_symbol(const scan_t *scan, const where_t *where, const char *msg);
47 
CT_NODISCARD size_t size
Definition: scan.h:128
CT_BROKER_API vector_t * ctx_vector_of(size_t size, const scan_t *scan)
Definition: context.c:48
CT_BROKER_API void ctx_error(const where_t *where, const void *state, const scan_t *scan, const char *msg)
Definition: context.c:59
CT_BROKER_API logger_t * ctx_get_logger(const scan_t *scan)
Definition: context.c:14
CT_BROKER_API arena_t * ctx_get_string_arena(const scan_t *scan)
Definition: context.c:26
CT_BROKER_API arena_t * ctx_get_ast_arena(const scan_t *scan)
Definition: context.c:32
CT_BROKER_API vector_t * ctx_vector_new(size_t size, const scan_t *scan)
Definition: context.c:43
CT_BROKER_API arena_t * ctx_get_arena(const scan_t *scan)
Definition: context.c:20
CT_BROKER_API vector_t * ctx_vector_init(void *init, const scan_t *scan)
Definition: context.c:38
CT_BROKER_API void * ctx_get_user(const scan_t *scan)
Definition: context.c:53
CT_BROKER_API void ctx_unknown_symbol(const scan_t *scan, const where_t *where, const char *msg)
Definition: context.c:69
#define CT_BEGIN_API
Definition: compiler.h:129
#define CT_END_API
Definition: compiler.h:130
an allocator object
Definition: arena.h:86
a logging sink
Definition: notify.c:14
arena_t * ast_arena
Definition: scan.h:24
logger_t * logger
Definition: scan.h:20
char user[]
Definition: scan.h:26
arena_t * arena
Definition: scan.h:22
arena_t * string_arena
Definition: scan.h:23
a source file scanner
Definition: scan.h:24
a generic vector of pointers
Definition: vector.c:16
a location inside a scanner locations are inclusive and 0-based
Definition: where.h:23