/
vTech
/
FcApps
Обзор
Документация
Войти
/
vTech
/
FcApps
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
FcLibs/FcString/src/FcString.h
101 строка
2 KB
vTech
alpha_00
03 дек 2025, 17:45
03 дек 2025, 17:45
ab8382d
Код
Авторство
О чём код?
#ifndef __FCSTRING_H__ #define __FCSTRING_H__ #include <stdlib.h> #include <stdbool.h> #include <stdint.h> #define FCSTRINGDEF static inline FCSTRINGDEF bool FcString_equal(const char* const pStr0, const char* const pStr1, const size_t length); FCSTRINGDEF bool FcString_equal_p0p1P0c(const char* const pStr0, const char* const pStr1, const char** ppStr0, const size_t length); FCSTRINGDEF void FcString_copy(const char* pSource, char* pDest, char endSymbol); FCSTRINGDEF void FcString_copy_p0p1P1c(const char* pSource, char* pDest, char** ppDest, char endSymbol); FCSTRINGDEF size_t FcString_length(const char* pStr, char endSymbol); FCSTRINGDEF bool FcString_equal(const char* const pStr0, const char* const pStr1, const size_t length) { size_t i; for (i = 0; i < length; i++) { if (pStr0[i] != pStr1[i]) return false; } return true; } FCSTRINGDEF bool FcString_equal_p0p1P0c(const char* const pStr0, const char* const pStr1, const char** ppStr0, const size_t length) { size_t i; for (i = 0; i < length && pStr0[i] && pStr1[i] && pStr0[i] == pStr1[i]; i++); *ppStr0 = pStr0 + i; if (length == i) return true; else return false; } FCSTRINGDEF void FcString_copy(const char* pSource, char* pDest, char endSymbol) { while (*pSource && *pDest && *pSource != endSymbol) { *pDest = *pSource; pDest++; pSource++; } } FCSTRINGDEF void FcString_copy_p0p1P1c(const char* pSource, char* pDest, char** ppDest, char endSymbol) { while (*pSource && *pDest && *pSource != endSymbol) { *pDest = *pSource; pDest++; pSource++; } *ppDest = pDest; } FCSTRINGDEF size_t FcString_length(const char* pStr, char endSymbol) { const char* pStart = pStr; while (*pStr && *pStr != endSymbol) pStr++; return pStr - pStart; } FCSTRINGDEF const uint8_t* FcString_strstr_u8(const uint8_t* pStr0, const uint8_t* pStr1) { size_t i; i = 0; while (*pStr0) { while (pStr0[i] == pStr1[i]) i++; if (pStr1[i] == 0) if (i != 0) return pStr0; pStr0++; } return NULL; } FCSTRINGDEF size_t FcString_strCopy(uint8_t* pDst, const uint8_t* pSrc) { size_t i = 0; while (pSrc[i]) { pDst[i] = pSrc[i]; i++; } return i; } FCSTRINGDEF size_t FcString_uint64(uint8_t (*pStr), uint64_t value) { size_t i, j; uint64_t mValue; mValue = value; for (j = 0; value; j++) value /= 10; if (pStr) for (i = j - 1; mValue; i--) { pStr[i] = (mValue % 10) + '0'; mValue /= 10; } return j; } #undef FCSTRINGDEF #endif //__FCSTRING_H__