aboutsummaryrefslogtreecommitdiff
path: root/files.h
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2021-01-15 19:27:25 -0800
committerBruce Hill <bruce@bruce-hill.com>2021-01-15 19:27:25 -0800
commit77b33d6a3cdc2655fa0319a2c5a077eb709cb6aa (patch)
treef4d29634e49c71f4688bcb08b6ec8da40d00be31 /files.h
parent10dbcdd4fd7bf2f14d49bdf19139f8dd5d53aebd (diff)
Renaming files: printing->print, file_loader->files
Diffstat (limited to 'files.h')
-rw-r--r--files.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/files.h b/files.h
new file mode 100644
index 0000000..cee341c
--- /dev/null
+++ b/files.h
@@ -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