From 8798eafd4cc4b32c590a40c276c09b830c5d62da Mon Sep 17 00:00:00 2001 From: seivarya Date: Sat, 20 Jun 2026 18:25:02 +0530 Subject: [refactor]: restructured the project --- include/reader.h | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 include/reader.h (limited to 'include/reader.h') diff --git a/include/reader.h b/include/reader.h new file mode 100644 index 0000000..8b61e6c --- /dev/null +++ b/include/reader.h @@ -0,0 +1,72 @@ +/* reader.h */ + +#define CTRL_KEY(k) ((k) & 0x1f) + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +using editor_cfg = struct editor_cfg { + int screenrows; + int screencols; + termios termios_inst {}; +}; + +class append_buffer { + private: + char *m_b{nullptr}; + uint32_t m_len{0}; + public: + append_buffer() {} + ~append_buffer() = default; + + void append(const char *s, int len) { + char *n = (char *)realloc(m_b, m_len + len); + + if (n == nullptr) + return; + memcpy(&n[m_len], s, len); + m_b = n; + m_len += len; + } + + static append_buffer &instance() { + static append_buffer obj; + return obj; + } + + void remove() { + free(m_b); + m_b = nullptr; + m_len = 0; + } + + void write_output() { + write(STDOUT_FILENO, m_b, m_len); + } +}; + +void init_editor(editor_cfg *cfg); +void die(const char *s); +void disable_raw(editor_cfg *cfg); +void enable_raw(editor_cfg *cfg); +void editor_refresh_scrn(editor_cfg *cfg); + +char editor_readkey(); + +int get_cursor_pos(int *rows, int *cols); +int get_window_size(int *rows, int *cols); +int is_number(char *strnum); + +size_t split(const std::string &txt, std::vector &strings, char ch); + + -- cgit v1.2.3