MGL(Win32)
読み取り中…
検索中…
一致する文字列を見つけられません
mgl_memory_utility.h
1// SPDX-License-Identifier: Zlib
2/* ------------------------------------------------------------------------- */
9/* ------------------------------------------------------------------------- */
10
11#ifndef INCGUARD_MGL_MEMORY_CLEAR_H_1752227311
12#define INCGUARD_MGL_MEMORY_CLEAR_H_1752227311
13
14#include <cstdint>
15#include <cstdlib>
16#include <cstring>
17#include <type_traits>
18
19namespace MGL::Memory
20{
22enum class ClearMode : uint8_t
23{
24 Auto,
25 Zero,
26 None,
27};
28
29namespace Utility
30{
31/* ------------------------------------------------------------------------- */
39/* ------------------------------------------------------------------------- */
40template <class ValueType>
41ValueType *InitializeArrayBuffer(void *arrayTop, size_t elementSize, ClearMode mode) noexcept
42{
43 // クラスかつデフォルトの場合は何もしない
44 if constexpr (std::is_class_v<ValueType>)
45 {
46 if (mode == ClearMode::Auto)
47 {
48 mode = ClearMode::None;
49 }
50 }
51 // それ以外の型はゼロクリア
52 else
53 {
54 mode = ClearMode::Zero;
55 }
56
57 // メモリ領域のクリア
58 if (mode == ClearMode::Zero)
59 {
60 memset(arrayTop, 0, sizeof(ValueType) * elementSize);
61 }
62
63 return new (arrayTop) ValueType[elementSize];
64}
65} // namespace Utility
66} // namespace MGL::Memory
67
68#endif // INCGUARD_MGL_MEMORY_CLEAR_H_1752227311
69
70// vim: et ts=4 sw=4 sts=4
71
ValueType
値のタイプ
Definition mgl_achievement_defs.h:33
@ Auto
エントリー済みを優先して取得し,無ければNoEntryと同じ