Skip to content

Commit ff237e2

Browse files
committed
Added Contains and IndexOf methods in MemEx. NuGet 1.0.7
1 parent 6efcc3b commit ff237e2

File tree

3 files changed

+218
-1
lines changed

3 files changed

+218
-1
lines changed

Memory.Extensions/CoMem.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ void Alloc(string str, CoStrType charSet)
1818
}
1919

2020
public byte* Ptr;
21+
public char* CharPtr => (char*)Ptr;
2122

2223
public static explicit operator void*(CoMem co) => co.Ptr;
2324
public static explicit operator byte*(CoMem co) => co.Ptr;

Memory.Extensions/MemEx.cs

Lines changed: 216 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,4 +182,220 @@ public static bool Compare(byte* arr, byte[] with, int len)
182182
fixed (void* ptr = with)
183183
return Compare(arr, ptr, len);
184184
}
185+
186+
[MethImpl(AggressiveInlining)]
187+
public static bool Contains(bool* arr, int length, bool val)
188+
{
189+
for (int i = 0; i < length; i++)
190+
if (arr[i] == val)
191+
return true;
192+
return false;
193+
}
194+
195+
[MethImpl(AggressiveInlining)]
196+
public static bool Contains(byte* arr, int length, byte val)
197+
{
198+
for (int i = 0; i < length; i++)
199+
if (arr[i] == val)
200+
return true;
201+
return false;
202+
}
203+
204+
[MethImpl(AggressiveInlining)]
205+
public static bool Contains(sbyte* arr, int length, sbyte val)
206+
{
207+
for (int i = 0; i < length; i++)
208+
if (arr[i] == val)
209+
return true;
210+
return false;
211+
}
212+
213+
[MethImpl(AggressiveInlining)]
214+
public static bool Contains(char* arr, int length, char val)
215+
{
216+
for (int i = 0; i < length; i++)
217+
if (arr[i] == val)
218+
return true;
219+
return false;
220+
}
221+
222+
[MethImpl(AggressiveInlining)]
223+
public static bool Contains(short* arr, int length, short val)
224+
{
225+
for (int i = 0; i < length; i++)
226+
if (arr[i] == val)
227+
return true;
228+
return false;
229+
}
230+
231+
[MethImpl(AggressiveInlining)]
232+
public static bool Contains(ushort* arr, int length, ushort val)
233+
{
234+
for (int i = 0; i < length; i++)
235+
if (arr[i] == val)
236+
return true;
237+
return false;
238+
}
239+
240+
[MethImpl(AggressiveInlining)]
241+
public static bool Contains(int* arr, int length, int val)
242+
{
243+
for (int i = 0; i < length; i++)
244+
if (arr[i] == val)
245+
return true;
246+
return false;
247+
}
248+
249+
[MethImpl(AggressiveInlining)]
250+
public static bool Contains(uint* arr, int length, uint val)
251+
{
252+
for (int i = 0; i < length; i++)
253+
if (arr[i] == val)
254+
return true;
255+
return false;
256+
}
257+
258+
[MethImpl(AggressiveInlining)]
259+
public static bool Contains(long* arr, int length, long val)
260+
{
261+
for (int i = 0; i < length; i++)
262+
if (arr[i] == val)
263+
return true;
264+
return false;
265+
}
266+
267+
[MethImpl(AggressiveInlining)]
268+
public static bool Contains(ulong* arr, int length, ulong val)
269+
{
270+
for (int i = 0; i < length; i++)
271+
if (arr[i] == val)
272+
return true;
273+
return false;
274+
}
275+
276+
[MethImpl(AggressiveInlining)]
277+
public static bool Contains(float* arr, int length, float val)
278+
{
279+
for (int i = 0; i < length; i++)
280+
if (arr[i] == val)
281+
return true;
282+
return false;
283+
}
284+
285+
[MethImpl(AggressiveInlining)]
286+
public static bool Contains(double* arr, int length, double val)
287+
{
288+
for (int i = 0; i < length; i++)
289+
if (arr[i] == val)
290+
return true;
291+
return false;
292+
}
293+
294+
[MethImpl(AggressiveInlining)]
295+
public static int IndexOf(bool* arr, int length, bool val)
296+
{
297+
for (int i = 0; i < length; i++)
298+
if (arr[i] == val)
299+
return i;
300+
return -1;
301+
}
302+
303+
[MethImpl(AggressiveInlining)]
304+
public static int IndexOf(byte* arr, int length, byte val)
305+
{
306+
for (int i = 0; i < length; i++)
307+
if (arr[i] == val)
308+
return i;
309+
return -1;
310+
}
311+
312+
[MethImpl(AggressiveInlining)]
313+
public static int IndexOf(sbyte* arr, int length, sbyte val)
314+
{
315+
for (int i = 0; i < length; i++)
316+
if (arr[i] == val)
317+
return i;
318+
return -1;
319+
}
320+
321+
[MethImpl(AggressiveInlining)]
322+
public static int IndexOf(char* arr, int length, char val)
323+
{
324+
for (int i = 0; i < length; i++)
325+
if (arr[i] == val)
326+
return i;
327+
return -1;
328+
}
329+
330+
[MethImpl(AggressiveInlining)]
331+
public static int IndexOf(short* arr, int length, short val)
332+
{
333+
for (int i = 0; i < length; i++)
334+
if (arr[i] == val)
335+
return i;
336+
return -1;
337+
}
338+
339+
[MethImpl(AggressiveInlining)]
340+
public static int IndexOf(ushort* arr, int length, ushort val)
341+
{
342+
for (int i = 0; i < length; i++)
343+
if (arr[i] == val)
344+
return i;
345+
return -1;
346+
}
347+
348+
[MethImpl(AggressiveInlining)]
349+
public static int IndexOf(int* arr, int length, int val)
350+
{
351+
for (int i = 0; i < length; i++)
352+
if (arr[i] == val)
353+
return i;
354+
return -1;
355+
}
356+
357+
[MethImpl(AggressiveInlining)]
358+
public static int IndexOf(uint* arr, int length, uint val)
359+
{
360+
for (int i = 0; i < length; i++)
361+
if (arr[i] == val)
362+
return i;
363+
return -1;
364+
}
365+
366+
[MethImpl(AggressiveInlining)]
367+
public static int IndexOf(long* arr, int length, long val)
368+
{
369+
for (int i = 0; i < length; i++)
370+
if (arr[i] == val)
371+
return i;
372+
return -1;
373+
}
374+
375+
[MethImpl(AggressiveInlining)]
376+
public static int IndexOf(ulong* arr, int length, ulong val)
377+
{
378+
for (int i = 0; i < length; i++)
379+
if (arr[i] == val)
380+
return i;
381+
return -1;
382+
}
383+
384+
[MethImpl(AggressiveInlining)]
385+
public static int IndexOf(float* arr, int length, float val)
386+
{
387+
for (int i = 0; i < length; i++)
388+
if (arr[i] == val)
389+
return i;
390+
return -1;
391+
}
392+
393+
[MethImpl(AggressiveInlining)]
394+
public static int IndexOf(double* arr, int length, double val)
395+
{
396+
for (int i = 0; i < length; i++)
397+
if (arr[i] == val)
398+
return i;
399+
return -1;
400+
}
185401
}

Memory.Extensions/Memory.Extensions.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
88
<PackageId>Yotic.Memory.Extensions</PackageId>
99
<Title>Memory.Extensions</Title>
10-
<Version>1.0.6</Version>
10+
<Version>1.0.7</Version>
1111
<Authors>Yotic</Authors>
1212
<Company></Company>
1313
<Description>Memory utils for convenient work with memory, arrays and pointers</Description>

0 commit comments

Comments
 (0)