diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2021-01-15 19:27:25 -0800 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2021-01-15 19:27:25 -0800 |
| commit | 77b33d6a3cdc2655fa0319a2c5a077eb709cb6aa (patch) | |
| tree | f4d29634e49c71f4688bcb08b6ec8da40d00be31 /files.h | |
| parent | 10dbcdd4fd7bf2f14d49bdf19139f8dd5d53aebd (diff) | |
Renaming files: printing->print, file_loader->files
Diffstat (limited to 'files.h')
| -rw-r--r-- | files.h | 38 |
1 files changed, 38 insertions, 0 deletions
@@ -0,0 +1,38 @@ +// +// files.h - Definitions of an API for loading files. +// +#ifndef FILES__H +#define FILES__H + +#include <stdio.h> + +struct allocated_pat_s; // declared in types.h + +typedef struct file_s { + struct file_s *next; + const char *filename; + char *contents, **lines, *end; + size_t nlines; + struct allocated_pat_s *pats; + unsigned int mmapped:1; +} file_t; + +__attribute__((format(printf,2,3))) +file_t *load_file(file_t **files, const char *fmt, ...); +__attribute__((nonnull(3), returns_nonnull)) +file_t *spoof_file(file_t **files, const char *filename, const char *text); +__attribute__((nonnull)) +void intern_file(file_t *f); +__attribute__((nonnull)) +void destroy_file(file_t **f); +__attribute__((pure, nonnull)) +size_t get_line_number(file_t *f, const char *p); +__attribute__((pure, nonnull)) +size_t get_char_number(file_t *f, const char *p); +__attribute__((pure, nonnull)) +const char *get_line(file_t *f, size_t line_number); +__attribute__((nonnull(1,2,3), format(printf,5,6))) +void fprint_line(FILE *dest, file_t *f, const char *start, const char *end, const char *fmt, ...); + +#endif +// vim: ts=4 sw=0 et cino=L2,l1,(0,W4,m1 |
