From a356913c397265bc8d9454b0c5dc43c8c898e1b5 Mon Sep 17 00:00:00 2001 From: Ian Moffett Date: Sat, 23 May 2026 01:34:59 -0400 Subject: build: Add headers Signed-off-by: Ian Moffett --- include/cescal/readbuf.h | 49 ++++++++++++++++++++++++++++++++++++++++++++++++ include/cescal/state.h | 40 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 include/cescal/readbuf.h create mode 100644 include/cescal/state.h (limited to 'include') diff --git a/include/cescal/readbuf.h b/include/cescal/readbuf.h new file mode 100644 index 0000000..8c7e601 --- /dev/null +++ b/include/cescal/readbuf.h @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2026, Chloe M. + * Provided under the BSD-3 clause + */ + +#ifndef CESCAL_READBUF_H +#define CESCAL_READBUF_H 1 + +#include +#include +#include + +#define READBUF_CAP 128 + +/* + * Represents a read buffer that reduces system call + * overhead. + * + * @buf: Read buffer + * @size: Total populated size of offer + * @tail: Tail pointer from start of buffer + */ +struct readbuf { + char buf[READBUF_CAP]; + size_t size; + size_t tail; +}; + +/* + * Initialize a read buffer + * + * @rb: Readbuffer to initialize + * + * Returns zero on success + */ +int readbuf_init(struct readbuf *rb); + +/* + * Read from a read buffer and populate if needed + * + * @rb: Target readbuffer + * @fd: File descriptor to read from + * + * Returns the character read on success, '\0' on + * failure. + */ +char readbuf_read(struct readbuf *rb, int fd); + +#endif /* !CESCAL_READBUF_H */ diff --git a/include/cescal/state.h b/include/cescal/state.h new file mode 100644 index 0000000..c604270 --- /dev/null +++ b/include/cescal/state.h @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2026, Chloe M. + * Provided under the BSD-3 clause + */ + +#ifndef CESCAL_STATE_H +#define CESCAL_STATE_H 1 + +#include +#include "cescal/readbuf.h" + +/* + * Compiler state machine + * + * @in_fd: Input file descriptor + * @rb: Read buffer + */ +struct cescal_state { + int in_fd; + struct readbuf rb; +}; + +/* + * Initialize the compiler state machine + * + * @state: Compiler state machine + * @pathname: Path of input source file + * + * Returns zero on success + */ +int state_init(struct cescal_state *state, const char *pathname); + +/* + * Close the compiler state machine + * + * @state: Compiler state machine to close + */ +void state_close(struct cescal_state *state); + +#endif /* !CESCAL_STATE_H */ -- cgit v1.2.3