blob: 542ef2d4887193cceaaf2950ffa0e88ba13038e2 [file] [log] [blame]
namespace Casbin.Model;
public ref struct PolicyScanner
{
private DefaultPolicyStore.Iterator _iterator;
internal PolicyScanner(DefaultPolicyStore.Iterator iterator) => _iterator = iterator;
public bool HasNext() => _iterator.HasNext();
public bool GetNext(out IPolicyValues outValues)
{
bool hasNext = _iterator.GetNext(out IPolicyValues values);
outValues = values;
return hasNext;
}
public void Interrupt() => _iterator.Interrupt();
}
public ref struct PolicyScanner<TRequest> where TRequest : IRequestValues
{
private PolicyScanner _scanner;
private readonly TRequest _request;
internal PolicyScanner(PolicyScanner scanner, in TRequest request)
{
_scanner = scanner;
_request = request;
}
public bool HasNext() => _scanner.HasNext();
public bool GetNext(out IPolicyValues outValues)
{
bool hasNext = _scanner.GetNext(out IPolicyValues values);
outValues = values;
return hasNext;
}
public void Interrupt() => _scanner.Interrupt();
}