string – String-, Pfad- und Terminal-Helfer

Zusammenfassung

string ist eine C-Helferbibliothek für gebundene String-Operationen (alle Buffer-Funktionen mit Größenkontrolle), Pfad-Handling (dirname, Executable-Pfad, Verzeichnis-Test/Anlage) sowie einfache Terminal-Ansteuerung über ANSI-Escape-Sequenzen (Farben, Cursor, Clear). Sie ist die Basis-Abhängigkeit der Bibliotheken threading und sm/rbs.

Umfang

  • String: string_copy / string_cat mit Buffer-Größe als Parameter. Fester Buffer-Typ string_t mit Längenlimit STRING_MAXLEN = 4096; STRING_ERROR (-1) für Fehlerfälle.
  • Pfade: string_dirname_from_filepath, string_get_exe_path, string_directory_exists / string_directory_create, string_filepath_exist, string_append_directory_to_path_and_create.
  • Substring: string_calculate_substring_index (Index eines Teilstrings).
  • Terminal: string_set_cursor_position, string_clear_screen.
  • ANSI-Makros: Vorder-/Hintergrundfarben (Standard + Bright), Textformatierung (fett, kursiv, unterstrichen, …), Cursor-Bewegung, 256-Farben, 24-bit True Color sowie kombinierte Hilfsmakros wie BOLD_RED, WHITE_ON_BLUE, RED_ON_WHITE.

API (Kern)

typedef char string_t[STRING_MAXLEN];
 
int32_t string_copy(char* destination, size_t size_bytes, const char* source);
int32_t string_cat(char* destination, size_t size_bytes, const char* source);
const char* string_dirname_from_filepath(char* filepath);
void string_get_exe_path(char* exe_path, size_t buffer_size);
bool string_directory_exists(const char* directory);
void string_directory_create(const char* directory);
int32_t string_calculate_substring_index(const char* string, const char* sub_string);
void string_set_cursor_position(int x, int y);
void string_clear_screen();

Nutzung

#include <string/string.h>
 
string_t buf;
string_copy(buf, sizeof(buf), "hallo");
string_cat(buf, sizeof(buf), " welt");
printf(COLOR_GREEN "%s" COLOR_RESET "\n", buf);

Abhängigkeiten

Keine weiteren Projekt-Bibliotheken (nur libc/POSIX).

Build

cmake -S . -B build
cmake --build build

Einbindung: add_subdirectory(../../libraries/string …), Header über den Include-Pfad <string/string.h>.

Quellen

Verwandte Artikel