#ifndef ARC_CONSOLE_LINE_BUFFER_H_ #define ARC_CONSOLE_LINE_BUFFER_H_ #ifdef __cplusplus extern "C" { #endif #include #include "arc/console/view.h" #include "arc/std/string.h" /** * @brief */ typedef struct ARC_ConsoleLineBuffer ARC_ConsoleLineBuffer; /** * @brief creates ARC_ConsoleLineBuffer type * * @param buffer ARC_ConsoleLineBuffer to create */ void ARC_ConsoleLineBuffer_Create(ARC_ConsoleLineBuffer **buffer); /** * @brief destroys ARC_ConsoleLineBuffer type * * @param buffer ARC_ConsoleLineBuffer to destroy */ void ARC_ConsoleLineBuffer_Destroy(ARC_ConsoleLineBuffer *buffer); /** * @brief clears the contents of a ARC_ConsoleLineBuffer * * @param buffer ARC_ConsoleLineBuffer to clear */ void ARC_ConsoleLineBuffer_Clear(ARC_ConsoleLineBuffer *buffer); /** * @brief renders a buffer to a ARC_ConsoleView * * @param buffer ARC_ConsoleLineBuffer to render * @param view ARC_ConsoleView to render the buffer contents to */ void ARC_ConsoleLineBuffer_Render(ARC_ConsoleLineBuffer *buffer, ARC_ConsoleView *view); /** * @brief renders a section of buffer to a ARC_ConsoleView * * @param buffer ARC_ConsoleLineBuffer to render * @param view ARC_ConsoleView to render the buffer contents to * @param startIndex start index of buffer to render * @param lines the number of lines of buffer to render */ void ARC_ConsoleLineBuffer_RenderSection(ARC_ConsoleLineBuffer *buffer, ARC_ConsoleView *view, uint32_t startIndex, uint32_t lines); /** * @brief adds a character to the buffer * * @param buffer ARC_ConsoleLineBuffer to add character to * @param character char to add to ARC_ConsoleBuffer */ void ARC_ConsoleLineBuffer_AddChar(ARC_ConsoleLineBuffer *buffer, char character); /** * @brief adds an ARC_String to the buffer * * @param buffer ARC_ConsoleLineBuffer to add character to * @param string ARC_String to add to ARC_ConsoleLineBuffer */ void ARC_ConsoleLineBuffer_AddString(ARC_ConsoleLineBuffer *buffer, ARC_String *string); /** * @brief adds a cstring to the buffer * * @param buffer ARC_ConsoleLineBuffer to add character to * @param string cstring to add to ARC_ConsoleLineBuffer * @param length the length of the c string to add */ void ARC_ConsoleLineBuffer_AddCString(ARC_ConsoleLineBuffer *buffer, char *cstring, uint64_t length); /** * @brief adds a cstring to the buffer with the cstrings string length * * @param buffer ARC_ConsoleLineBuffer to add character to * @param string cstring to add to ARC_ConsoleLineBuffer */ void ARC_ConsoleLineBuffer_AddCStringWithStrlen(ARC_ConsoleLineBuffer *buffer, char *cstring); /** * @brief gets the number of lines from a console line buffer * * @param buffer ARC_ConsoleLineBuffer get number of lines from * * @return the number of lines within an ARC_ConsoleLineBuffer */ uint32_t ARC_ConsoleLineBuffer_GetLineNumbers(ARC_ConsoleLineBuffer *buffer); #ifdef __cplusplus } #endif #endif //!ARC_CONSOLE_LINE_BUFFER_H_