diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/cescal/readbuf.h | 49 | ||||
| -rw-r--r-- | include/cescal/state.h | 40 |
2 files changed, 89 insertions, 0 deletions
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 <sys/types.h> +#include <stdint.h> +#include <stddef.h> + +#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 <stdint.h> +#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 */ |
