Files
MontaukOS/kernel/src/Libraries/String.hpp
T
2026-04-05 15:14:07 +02:00

49 lines
1.2 KiB
C++

#pragma once
#include <cstdint>
#include <cstddef>
namespace Lib {
inline int strlen(const char *string) {
int c = 0;
while (*string != '\0') {
string++;
c++;
}
return c;
}
inline int strcmp(const char *a, const char *b) {
while (*a && *b) {
if (*a != *b) {
return (unsigned char)*a - (unsigned char)*b;
}
a++;
b++;
}
return (unsigned char)*a - (unsigned char)*b;
}
inline int strncmp(const char *a, const char *b, size_t max_len) {
for (size_t i = 0; i < max_len; i++) {
if (a[i] != b[i]) return (unsigned char)a[i] - (unsigned char)b[i];
if (a[i] == '\0') return 0;
}
return 0;
}
inline char *strncpy(char *dest, const char *src, size_t max_len) {
size_t i = 0;
while (i < max_len - 1 && src[i]) {
dest[i] = src[i];
i++;
}
dest[i] = '\0';
return dest;
}
char *int2basestr(int num, size_t radix);
char *u64_2_basestr(uint64_t num, size_t radix);
char *uint2basestr(uint32_t num, size_t radix);
}