Sane C++ Libraries
C++ Platform Abstraction Libraries
Loading...
Searching...
No Matches
LibC.h
1// Copyright (c) Stefano Cristiano
2// SPDX-License-Identifier: MIT
3#pragma once
4#include "../Foundation/PrimitiveTypes.h"
5#if SC_COMPILER_ENABLE_STD_CPP || SC_LANGUAGE_EXCEPTIONS || \
6 (SC_PLATFORM_WINDOWS && not SC_COMPILER_MSVC and not SC_COMPILER_CLANG_CL)
7#include <memory.h>
8#include <string.h>
9#else
10#if SC_PLATFORM_WINDOWS
11extern "C"
12{
13 void* __cdecl memmove(void* dst, const void* src, SC::size_t n);
14 void* __cdecl memcpy(void* dst, const void* src, SC::size_t n);
15 int __cdecl memcmp(const void* s1, const void* s2, SC::size_t n);
16 void* __cdecl memset(void* dst, SC::int32_t c, SC::size_t len);
17 [[nodiscard]] void const* __cdecl memchr(const void* ptr, SC::int32_t c, SC::size_t count);
18
19 SC::size_t strlen(const char* s);
20 SC::size_t __cdecl wcslen(wchar_t const*);
21}
22#elif SC_PLATFORM_APPLE
23extern "C"
24{
25 void* memmove(void* dst, const void* src, SC::size_t n);
26 void* memcpy(void* dst, const void* src, SC::size_t n);
27 int memcmp(const void* s1, const void* s2, SC::size_t n);
28 void* memset(void* dst, SC::int32_t c, SC::size_t len);
29 void* memchr(const void* ptr, SC::int32_t c, SC::size_t count);
30
31 SC::size_t strlen(const char* s);
32}
33#elif SC_PLATFORM_LINUX
34extern "C"
35{
36 void* memmove(void* dst, const void* src, SC::size_t n);
37 void* memcpy(void* dst, const void* src, SC::size_t n);
38 int memcmp(const void* s1, const void* s2, SC::size_t n);
39 void* memset(void* dst, SC::int32_t c, SC::size_t len);
40
41 SC::size_t strlen(const char* s);
42}
43extern "C++"
44{
45 extern const void* memchr(const void* __s, int __c, SC::size_t __n) __asm("memchr");
46}
47#elif SC_PLATFORM_EMSCRIPTEN
48#else
49#error "Unsupported platform"
50#endif
51#endif // SC_SAFE_INCLUDES
decltype(sizeof(0)) size_t
Platform independent unsigned size type.
Definition PrimitiveTypes.h:45
int int32_t
Platform independent (4) bytes signed int.
Definition PrimitiveTypes.h:37