1#pragma once
2
3#include <cstring>
4
5#include <basis/seadRawPrint.h>
6#ifndef SEAD_PRIM_MEM_UTIL_H_
7#include <prim/seadMemUtil.h>
8#endif
9#include <prim/seadPtrUtil.h>
10
11namespace sead
12{
13inline void* MemUtil::fill(void* ptr, u8 c, size_t size)
14{
15 return std::memset(ptr, c, size);
16}
17
18inline void* MemUtil::fillZero(void* ptr, size_t size)
19{
20 return std::memset(ptr, 0, size);
21}
22
23inline void* MemUtil::copyOverlap(void* dest, const void* src, size_t size)
24{
25 return std::memmove(dest, src, size);
26}
27
28inline void* MemUtil::copy(void* dest, const void* src, size_t size)
29{
30 SEAD_ASSERT_MSG(!((PtrUtil::addOffset(dest, size) > src && src >= dest) ||
31 (PtrUtil::addOffset(src, size) > dest && dest >= src)),
32 "cross copy area");
33
34 return std::memcpy(dest, src, size);
35}
36
37inline int MemUtil::compare(const void* ptr1, const void* ptr2, size_t size)
38{
39 return std::memcmp(ptr1, ptr2, size);
40}
41} // namespace sead
42