From c455e7b67d2e55e6ed03e3449203d4e307f5a7dd Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Fri, 13 Sep 2024 20:18:08 -0400 Subject: Rename builtins/ -> stdlib/ --- stdlib/files.h | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 stdlib/files.h (limited to 'stdlib/files.h') diff --git a/stdlib/files.h b/stdlib/files.h new file mode 100644 index 00000000..f650f78e --- /dev/null +++ b/stdlib/files.h @@ -0,0 +1,35 @@ +// +// files.h - Definitions of an API for loading files. +// +#pragma once + +#include +#include +#include + +typedef struct { + const char *filename, *relative_filename; + const char *text; + int64_t len; + int64_t num_lines, line_capacity; + int64_t *line_offsets; +} file_t; + +char *resolve_path(const char *path, const char *relative_to, const char *system_path); +__attribute__((pure, nonnull)) +char *file_base_name(const char *path); +__attribute__((nonnull)) +file_t *load_file(const char *filename); +__attribute__((nonnull, returns_nonnull)) +file_t *spoof_file(const char *filename, const char *text); +__attribute__((pure, nonnull)) +int64_t get_line_number(file_t *f, const char *p); +__attribute__((pure, nonnull)) +int64_t get_line_column(file_t *f, const char *p); +__attribute__((pure, nonnull)) +const char *get_line(file_t *f, int64_t line_number); +__attribute__((pure, nonnull)) +const char *get_file_pos(file_t *f, const char *p); +int highlight_error(file_t *file, const char *start, const char *end, const char *hl_color, int64_t context_lines, bool use_color); + +// vim: ts=4 sw=0 et cino=L2,l1,(0,W4,m1,\:0 -- cgit v1.2.3