checkpoint
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Dynamic;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
@@ -14,17 +13,17 @@ namespace Foodsoft.Alpm
|
||||
{
|
||||
return new EnumerableWrapper<string, THandle>(handle, getItems, Marshal.PtrToStringUTF8!);
|
||||
}
|
||||
|
||||
|
||||
internal static EnumerableWrapper<Depend, THandle> CreateForDepend<THandle>(THandle handle,
|
||||
Func<THandle, IntPtr> getItems) where THandle : SafeHandle
|
||||
{
|
||||
return new EnumerableWrapper<Depend, THandle>(handle, getItems, (ptr) => new Depend(ptr));
|
||||
return new EnumerableWrapper<Depend, THandle>(handle, getItems, ptr => new Depend(ptr));
|
||||
}
|
||||
|
||||
|
||||
internal static EnumerableWrapper<Backup, THandle> CreateForBackup<THandle>(THandle handle,
|
||||
Func<THandle, IntPtr> getItems) where THandle : SafeHandle
|
||||
{
|
||||
return new EnumerableWrapper<Backup, THandle>(handle, getItems, (ptr) => new Backup(ptr));
|
||||
return new EnumerableWrapper<Backup, THandle>(handle, getItems, ptr => new Backup(ptr));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,6 +40,8 @@ namespace Foodsoft.Alpm
|
||||
_getElement = getElement;
|
||||
}
|
||||
|
||||
public bool IsReadOnly => true;
|
||||
|
||||
public IEnumerator<TElement> GetEnumerator()
|
||||
{
|
||||
var release = false;
|
||||
@@ -51,9 +52,7 @@ namespace Foodsoft.Alpm
|
||||
_handle.DangerousAddRef(ref release);
|
||||
if (!release) throw new ObjectDisposedException(_handle.GetType().FullName);
|
||||
for (var list = _getItems(_handle); list != IntPtr.Zero; list = Detail.ListNext(list))
|
||||
{
|
||||
yield return _getElement(Detail.ListData(list));
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
@@ -62,7 +61,10 @@ namespace Foodsoft.Alpm
|
||||
}
|
||||
}
|
||||
|
||||
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
|
||||
IEnumerator IEnumerable.GetEnumerator()
|
||||
{
|
||||
return GetEnumerator();
|
||||
}
|
||||
|
||||
public int Count
|
||||
{
|
||||
@@ -70,7 +72,7 @@ namespace Foodsoft.Alpm
|
||||
{
|
||||
var getItems = _getItems;
|
||||
var handle = _handle;
|
||||
return handle.UseHandle((_) => (int) alpm.alpm_list_count(getItems(handle)));
|
||||
return handle.UseHandle(_ => (int) alpm.alpm_list_count(getItems(handle)));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -82,16 +84,14 @@ namespace Foodsoft.Alpm
|
||||
switch (item)
|
||||
{
|
||||
case string s:
|
||||
return handle.UseHandle((_) => alpm.alpm_list_find_str(getItems(handle), s) != (IntPtr.Zero));
|
||||
return handle.UseHandle(_ => alpm.alpm_list_find_str(getItems(handle), s) != IntPtr.Zero);
|
||||
default:
|
||||
var comparer = EqualityComparer<TElement>.Default;
|
||||
return handle.UseHandle((_) =>
|
||||
return handle.UseHandle(_ =>
|
||||
{
|
||||
for (var list = getItems(handle); list != IntPtr.Zero; list = Detail.ListNext(list))
|
||||
{
|
||||
if (comparer.Equals(item, getElement(Detail.ListData(list))))
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
@@ -103,12 +103,10 @@ namespace Foodsoft.Alpm
|
||||
var getItems = _getItems;
|
||||
var getElement = _getElement;
|
||||
var handle = _handle;
|
||||
handle.UseHandle((_) =>
|
||||
handle.UseHandle(_ =>
|
||||
{
|
||||
for (var list = getItems(handle); list != IntPtr.Zero; list = Detail.ListNext(list))
|
||||
{
|
||||
array[arrayIndex++] = getElement(Detail.ListData(list));
|
||||
}
|
||||
|
||||
return arrayIndex;
|
||||
});
|
||||
@@ -128,7 +126,5 @@ namespace Foodsoft.Alpm
|
||||
{
|
||||
throw new NotSupportedException();
|
||||
}
|
||||
|
||||
public bool IsReadOnly => true;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user