Skip to content

Commit c1baccb

Browse files
committed
Copmressed all overloads for Contains and IndexOf methods to T : unmanaged. NuGet 1.0.8
1 parent 5383c54 commit c1baccb

File tree

2 files changed

+5
-203
lines changed

2 files changed

+5
-203
lines changed

Memory.Extensions/MemEx.cs

Lines changed: 4 additions & 202 deletions
Original file line numberDiff line numberDiff line change
@@ -184,217 +184,19 @@ public static bool Compare(byte* arr, byte[] with, int len)
184184
}
185185

186186
[MethImpl(AggressiveInlining)]
187-
public static bool Contains(bool* arr, int length, bool val)
187+
public static bool Contains<T>(T* arr, int length, T val) where T : unmanaged
188188
{
189189
for (int i = 0; i < length; i++)
190-
if (arr[i] == val)
190+
if (arr[i].Equals(val))
191191
return true;
192192
return false;
193193
}
194194

195195
[MethImpl(AggressiveInlining)]
196-
public static bool Contains(byte* arr, int length, byte val)
196+
public static int IndexOf<T>(T* arr, int length, T val) where T : unmanaged
197197
{
198198
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)
199+
if (arr[i].Equals(val))
398200
return i;
399201
return -1;
400202
}

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.7</Version>
10+
<Version>1.0.8</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)