57 lines
1.7 KiB
C
57 lines
1.7 KiB
C
/*
|
|
File: string.h
|
|
Author: Taylor Robbins
|
|
Date: 08\28\2025
|
|
*/
|
|
|
|
#ifndef _STRING_H
|
|
#define _STRING_H
|
|
|
|
#include <stdint.h>
|
|
|
|
#define WASM_STD_USE_BUILTIN_MEMSET 1
|
|
#define WASM_STD_USE_BUILTIN_MEMCPY 1
|
|
#define WASM_STD_USE_BUILTIN_MEMMOVE 1
|
|
|
|
MAYBE_START_EXTERN_C
|
|
|
|
#if WASM_STD_USE_BUILTIN_MEMSET
|
|
// Basically converts to memory.fill instruction
|
|
#define memset(pntr, value, numBytes) __builtin_memset((pntr), (value), (numBytes));
|
|
#else
|
|
void* _memset(void* pntr, int value, size_t numBytes);
|
|
#define memset(pntr, value, numBytes) _memset((pntr), (value), (numBytes))
|
|
#endif
|
|
|
|
#if WASM_STD_USE_BUILTIN_MEMCPY
|
|
// Basically converts to memory.copy instruction
|
|
#define memcpy(dest, source, numBytes) __builtin_memcpy((dest), (source), (numBytes));
|
|
#else
|
|
void* _memcpy(void* dest, const void* source, size_t numBytes);
|
|
#define memcpy(dest, source, numBytes) _memcpy((dest), (source), (numBytes))
|
|
#endif
|
|
|
|
#if WASM_STD_USE_BUILTIN_MEMMOVE
|
|
// Basically converts to memory.copy instruction
|
|
#define memmove(dest, source, numBytes) __builtin_memmove((dest), (source), (numBytes));
|
|
#else
|
|
void* _memmove(void* dest, const void* source, size_t numBytes);
|
|
#define memmove(dest, source, numBytes) _memmove((dest), (source), (numBytes))
|
|
#endif
|
|
|
|
int memcmp(const void* left, const void* right, size_t numBytes);
|
|
char* strcpy(char* dest, const char* source);
|
|
// TODO: char* strstr(const char* haystack, const char* needle);
|
|
|
|
int strcmp(const char* left, const char* right);
|
|
int strncmp(const char* left, const char* right, size_t numBytes);
|
|
size_t strlen(const char* str);
|
|
// TODO: size_t wcslen(const wchar_t* str);
|
|
|
|
//TODO: char *strchr (const char *, int); //NEEDED for slre.c
|
|
//TODO: char *strrchr (const char *, int); //NEEDED for slre.c
|
|
|
|
MAYBE_END_EXTERN_C
|
|
|
|
#endif // _STRING_H
|