#ifndef SPSTR_H # define SPSTR_H #include /** * @brief more secure string to use, should always be null terminated at data + size to allow passing to other standard c string and never reaching out of boundaries * */ typedef struct { size_t size;//in byte char* data; } string_t; /** * @brief used for runtime data manipulation * */ typedef struct { size_t size;//in byte uint8_t* data; } buffer_t; void* spmemset(void* dst, uint8_t c, size_t n); void spmemcmp(); void spmemcpy(); void spmemmove(); void spmemchr(); void spstrcpy(); void spstrcat(); void spstrcmp(); void spstrchr(); void spstrrchr(); void spstrstr(); void spstrcspn(); void spstrspn(); void spstrpbrk(); void spstrtok(); void spstrcoll(); #define SPSTR_IMPL #ifdef SPSTR_IMPL #ifdef SPSTR_STATIC #define SPSTR_DEF static #else #define SPSTR_DEF extern #endif #ifdef __cplusplus extern "C" { #endif SPSTR_DEF void* spmemset(void* dst, uint8_t c, size_t n) { uint8_t* span = 0x00; span = (uint8_t *)dst; if (dst == 0x00) { return (dst); } for (int i = 0; i < n; i++) { span[i] = c; } return (dst); } SPSTR_DEF void spmemcmp() { } SPSTR_DEF void spmemcpy() { } SPSTR_DEF void spmemmove() { } SPSTR_DEF void spmemchr() { } SPSTR_DEF void spstrcpy() { } SPSTR_DEF void spstrcat() { } SPSTR_DEF void spstrcmp() { } SPSTR_DEF void spstrchr() { } SPSTR_DEF void spstrrchr() { } SPSTR_DEF void spstrstr() { } SPSTR_DEF void spstrcspn() { } SPSTR_DEF void spstrspn() { } SPSTR_DEF void spstrpbrk() { } SPSTR_DEF void spstrtok() { } SPSTR_DEF void spstrcoll() { } #ifdef __cplusplus } #endif #endif #endif