Files
CSPP-coursework/final/editor.h
T
2024-12-03 09:47:13 +00:00

99 lines
2.3 KiB
C

#include "dynstr.h"
#include <stdint.h>
/**
* maintains the state of a text editor, including the text buffer,
* cursor position, and various editor settings.
*/
typedef struct {
uint32_t lines;
uint32_t capacity;
uint32_t buffer_line;
uint32_t buffer_col;
uint32_t y_offset;
uint32_t x_offset;
bool unsaved_changes;
bool editmode;
String_t* buffer;
String_t* original;
String_t filename;
} Editor;
/**
* Creates a new editor instance from a filename
*
* @param filename The name of the file to open
* @return Editor A new editor instance initialized with the file's content
*/
Editor new_editor(String_t filename);
/**
* Creates a new editor instance from an input string
*
* @param input_string initial editor content
* @param filename name of the file being edited
* @return an instance of the editor
*/
Editor editor_from(String_t input_string, String_t filename);
/**
* Moves the cursor in the editor (relative to it's current position)
*
* @param self Pointer to the editor instance
* @param x Horizontal movement (negative for left, positive for right)
* @param y Vertical movement (negative for up, positive for down)
*/
void move_cursor(Editor* self, int x, int y);
/**
* Deletes the character before the cursor
*
* @param self Pointer to the editor instance
*/
void delchar(Editor* self);
/**
* Adds a character at the cursor position
*
* @param self Pointer to the editor instance
* @param c The character to add
*/
void addchar(Editor* self, char c);
/**
* Handles the enter key press, creating a new line
*
* @param self Pointer to the editor instance
*/
void pressed_enter(Editor* self);
/**
* Toggles between edit and command mode
*
* @param self Pointer to the editor instance
*/
void switch_mode(Editor* self);
/**
* Cleans up and frees resources used by the editor
*
* @param self Pointer to the editor instance
*/
void shutdown_editor(Editor* self);
/**
* Saves the current buffer content to the file
*
* @param self Pointer to the editor instance
* @return int Returns 0 on success, non-zero on failure
*/
int save_file(Editor* self);
/**
* Converts the editor's buffer content to a String_t type
*
* @param self Pointer to the editor instance
* @return String_t* Pointer to a string containing the buffer content
*/
String_t* to_string(Editor* self);