blob: ba96ed50a0bc6d11ae5e30eb6012d8ae820768ef (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
// This file defines utility functions for autoformatting code
#pragma once
#include <stdbool.h>
#include "../ast.h"
#include "../stdlib/datatypes.h"
#include "../stdlib/optionals.h"
#define MAX_WIDTH 100
#define must(expr) \
({ \
OptionalText_t _expr = expr; \
if (_expr.tag == TEXT_NONE) return NONE_TEXT; \
(Text_t) _expr; \
})
extern const Text_t single_indent;
void add_line(Text_t *code, Text_t line, Text_t indent);
OptionalText_t next_comment(Table_t comments, const char **pos, const char *end);
bool range_has_comment(const char *start, const char *end, Table_t comments);
CONSTFUNC int suggested_blank_lines(ast_t *first, ast_t *second);
Text_t indent_code(Text_t code);
Text_t parenthesize(Text_t code, Text_t indent);
CONSTFUNC ast_t *unwrap_block(ast_t *ast);
OptionalText_t termify_inline(ast_t *ast, Table_t comments);
Text_t termify(ast_t *ast, Table_t comments, Text_t indent);
|