acme
Foundational cross-platform layer of the ca2 framework
Toggle main menu visibility
Loading...
Searching...
No Matches
_memory.h
1
// Created by camilo on 2022-02-14 10:51 PM <3ThomasBorregaardSorensen!!
2
#pragma once
3
4
5
CLASS_DECL_ACME
const
void
* memory_find(
const
void
* l, memsize l_len,
const
void
* s, memsize s_len);
6
7
8
#if defined(_WIN32) || defined(__BSD__) || defined(__APPLE__)
9
10
11
const
void
* _memory_find(
const
void
* l, memsize l_len,
const
void
* s, memsize s_len);
12
13
#else
14
15
16
inline
const
void
* _memory_find(
const
void
* l, memsize l_len,
const
void
* s, memsize s_len)
17
{
18
19
return
memmem(l, l_len, s, s_len);
20
21
}
22
23
24
#endif
25
26
27
inline
const
void
* _memory_find_unsigned_char(
const
void
* l, ::i32 i, memsize len)
28
{
29
30
auto
u = (::u8) (*((::u32*)(&i)) & 0xff);
31
32
auto
p = (const ::u8*)l;
33
34
while
(len > 0)
35
{
36
37
if
(*p == u)
38
{
39
40
return
p;
41
42
}
43
44
p++;
45
46
len--;
47
48
}
49
50
return
nullptr
;
51
52
}
53
54
55
56
inline
const
void
* memory_find_unsigned_char(
const
void
* l, ::i32 i, memsize len)
57
{
58
59
if
(::is_null(l))
60
{
61
62
return
nullptr
;
63
64
}
65
66
return
_memory_find_unsigned_char(l, i, len);
67
68
}
69
70
71
72
73
#pragma once
74
75
76
77
CLASS_DECL_ACME
void
* memory_set(
void
* p, ::i32 i, memsize iSize);
78
CLASS_DECL_ACME
void
* memory_and(
void
* p,
const
void
* point1,
const
void
* point2, memsize iSize);
79
CLASS_DECL_ACME
void
* memory_copy(
void
* dst,
const
void
* src, memsize iSize);
80
CLASS_DECL_ACME
void
* memory_transfer(
void
* dst,
const
void
* src, memsize iSize);
81
CLASS_DECL_ACME::wide_character * wide_memory_copy(::wide_character * dst, const ::wide_character * src, memsize iSize);
82
83
CLASS_DECL_ACME
void
* reverse_memory(
void
* p, memsize iSize);
84
CLASS_DECL_ACME
void
* reverse_memory_copy(
void
* p,
const
void
* point1, memsize iSize);
85
86
87
CLASS_DECL_ACME::std::strong_ordering memory_order(
const
void
* sz1,
const
void
* sz2, memsize iSize);
88
89
CLASS_DECL_ACME::std::strong_ordering _memory_order(
const
void
* p1,
const
void
* p2, memsize size);
90
91
92
#ifdef __cplusplus
93
94
95
inline
void
* zero(
void
* p, memsize size) { memory_set(p, 0, size);
return
p; }
96
97
98
inline
bool
is_zero(
const
void
* p, memsize iSize)
99
{
100
101
::u8 * pb = (::u8 *)p;
102
103
while
(*pb ==
'\0'
&& iSize > 0)
104
{
105
106
pb++;
107
108
iSize--;
109
110
}
111
112
return
iSize == 0;
113
114
}
115
116
117
118
119
//#define zero(array) (::zero(array, sizeof(array)))
120
121
122
123
#endif
124
125
126
127
128
129
130
131
132
memory
_memory.h
Generated by
1.17.0