// This file is part of noxos and licensed under the MIT open source license #ifndef NOX_STRING_H #define NOX_STRING_H #include "stdtypes.h" #include #define STRING_EXT_SIZE(n) ((n) + 5) typedef const char* string_t; typedef enum { STRING_EXT_CMD_CLEAR, STRING_EXT_CMD_CURSOR_MOVE, STRING_EXT_CMD_CURSOR_SET, STRING_EXT_CMD_COLOR_SET, STRING_EXT_CMD_COLOR_RESET, STRING_EXT_CMD_RENDER_DISABLE, STRING_EXT_CMD_RENDER_ENABLE, STRING_EXT_CMD_KEYBOARD_ECHO } string_ext_command_E; typedef struct { uint8_t shift_in; uint16_t length; uint8_t command; uint8_t data; // DATA BLOCKS // SHIFT OUT }__attribute__((packed)) string_ext_header_T; uint32_t string_length (string_t string); bool string_compare (string_t a, string_t b); uint32_t string_find_next (string_t string, char chr); uint32_t string_find_last (string_t string, char chr); void string_add_ext_command (string_t string, string_ext_command_E command, int num_data, uint8_t data[]); uint64_t variadic_format_size (string_t string, va_list args); uint64_t format_size (string_t string, ...); void variadic_format (string_t output, string_t string, va_list args); void format (string_t output, string_t string, ...); void string_unsigned_dec_to_alpha (string_t string, uint64_t value); void string_dec_to_alpha (string_t string, int64_t value); void string_hex_8bit_to_alpha (string_t string, uint8_t value); void string_hex_16bit_to_alpha (string_t string, uint16_t value); void string_hex_32bit_to_alpha (string_t string, uint32_t value); void string_hex_64bit_to_alpha (string_t string, uint64_t value); void string_bin_to_alpha (string_t string, uint8_t num_bits, uint64_t value); void string_bool_to_alpha (string_t string, bool value); bool string_is_char_text (char chr); bool string_is_char_number (char chr); bool string_is_char_alpha (char chr); bool string_is_char_uppercase (char chr); bool string_is_char_lowercase (char chr); #endif //NOX_STRING_H