2 // files.h - Definitions of an API for loading files.
9 typedef struct file_s {
12 char *mmapped, *allocated;
13 char **lines, *start, *end;
17 __attribute__((nonnull(2))) file_t *load_file(file_t **files, const char *filename);
18 __attribute__((format(printf, 2, 3))) file_t *load_filef(file_t **files, const char *fmt, ...);
19 __attribute__((nonnull)) void slice_file(file_t *slice, file_t *src, const char *start, const char *end);
20 __attribute__((nonnull(3), returns_nonnull)) file_t *spoof_file(file_t **files, const char *filename, const char *text,
22 __attribute__((nonnull)) void destroy_file(file_t **f);
23 __attribute__((pure, nonnull)) size_t get_line_number(file_t *f, const char *p);
24 __attribute__((pure, nonnull)) size_t get_line_column(file_t *f, const char *p);
25 __attribute__((pure, nonnull)) const char *get_line(file_t *f, size_t line_number);
27 // vim: ts=4 sw=0 et cino=L2,l1,(0,W4,m1,\:0