Cthulhu  0.2.10
Cthulhu compiler collection
common.h
Go to the documentation of this file.
1 // SPDX-License-Identifier: LGPL-3.0-only
2 
3 #pragma once
4 
5 #include "format/format.h"
6 #include "format/colour.h"
7 
8 #include "core/where.h"
9 
10 #include <stddef.h>
11 #include <stdbool.h>
12 
14 
15 size_t get_offset_line(bool zero_indexed_lines, size_t line);
16 
18 int get_num_width(size_t num);
19 
20 #define FMT_BASE10_MAX_WIDTH 20
21 
22 char *fmt_left_align(arena_t *arena, size_t width, const char *fmt, ...);
23 char *fmt_right_align(arena_t *arena, size_t width, const char *fmt, ...);
24 
28 
29 typedef struct source_config_t
30 {
36 
38 char *fmt_source_location(source_config_t config, const char *path, where_t where);
colour_t
a colour code
Definition: colour.h:23
fmt_heading_t
line heading style
Definition: format.h:18
CT_NODISCARD STA_FORMAT_STRING const char * fmt
Definition: str.h:68
an allocator object
Definition: arena.h:86
generic print options
Definition: format.h:35
a formatting context when using colours
Definition: colour.h:46
bool zero_indexed_lines
Definition: common.h:34
heading_style_t heading_style
Definition: common.h:33
colour_t colour
Definition: common.h:32
format_context_t context
Definition: common.h:31
a location inside a scanner locations are inclusive and 0-based
Definition: where.h:23
char * fmt_source_location(source_config_t config, const char *path, where_t where)
Definition: common.c:124
size_t get_offset_line(bool zero_indexed_lines, size_t line)
colour defines
Definition: common.c:12
char * fmt_left_align(arena_t *arena, size_t width, const char *fmt,...)
Definition: common.c:36
char * fmt_right_align(arena_t *arena, size_t width, const char *fmt,...)
Definition: common.c:59
int get_num_width(size_t num)
get the width of a number if it were printed as base10
Definition: common.c:21
format_context_t format_context_make(print_options_t options)
Definition: common.c:114