Skip to content

Commit

Permalink
Refactor func methods: use do-while cycle
Browse files Browse the repository at this point in the history
  • Loading branch information
andreise committed Aug 14, 2023
1 parent 30a698e commit a5cd743
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 50 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,21 +16,22 @@ public FlatArray<T> Filter(Func<T, bool> predicate)
var resultItems = new T[initialCapacity];
var resultLength = 0;

InternalForEach(
item =>
var counter = 0;
do
{
if (predicate.Invoke(items![counter]) is false)
{
if (predicate.Invoke(item) is false)
{
return;
}
continue;
}

if (resultLength == resultItems.Length)
{
InnerBufferHelper.EnlargeBuffer(ref resultItems);
}
if (resultLength == resultItems.Length)
{
InnerBufferHelper.EnlargeBuffer(ref resultItems);
}

resultItems[resultLength++] = item;
});
resultItems[resultLength++] = items![counter];
}
while (++counter < resultItems.Length);

if (resultLength == default)
{
Expand All @@ -54,21 +55,22 @@ public FlatArray<T> Filter(Func<T, int, bool> predicate)
var resultItems = new T[initialCapacity];
var resultLength = 0;

InternalForEach(
(i, item) =>
var counter = 0;
do
{
if (predicate.Invoke(items![counter], counter) is false)
{
continue;
}

if (resultLength == resultItems.Length)
{
if (predicate.Invoke(item, i) is false)
{
return;
}
if (resultLength == resultItems.Length)
{
InnerBufferHelper.EnlargeBuffer(ref resultItems);
}
resultItems[resultLength++] = item;
});
InnerBufferHelper.EnlargeBuffer(ref resultItems);
}

resultItems[resultLength++] = items![counter];
}
while (++counter < resultItems.Length);

if (resultLength == default)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,19 @@ public FlatArray<TResult> FlatMap<TResult>(Func<T, FlatArray<TResult>> map)

var resultList = new List<TResult>();

InternalForEach(
item =>
{
var resultArray = map.Invoke(item);
var counter = 0;
do
{
var resultArray = map.Invoke(items![counter]);

if (resultArray.length == default)
{
return;
}
if (resultArray.length == default)
{
continue;
}

resultList.AddRange(new ArraySegment<TResult>(resultArray.items!, 0, resultArray.length));
});
resultList.AddRange(new ArraySegment<TResult>(resultArray.items!, 0, resultArray.length));
}
while (++counter < length);

return FlatArray<TResult>.InnerFactory.FromList(resultList);
}
Expand All @@ -42,18 +43,19 @@ public FlatArray<TResult> FlatMap<TResult>(Func<T, int, FlatArray<TResult>> map)

var resultList = new List<TResult>();

InternalForEach(
(i, item) =>
{
var resultArray = map.Invoke(item, i);
var counter = 0;
do
{
var resultArray = map.Invoke(items![counter], counter);

if (resultArray.length == default)
{
return;
}
if (resultArray.length == default)
{
continue;
}

resultList.AddRange(new ArraySegment<TResult>(resultArray.items!, 0, resultArray.length));
});
resultList.AddRange(new ArraySegment<TResult>(resultArray.items!, 0, resultArray.length));
}
while (++counter < length);

return FlatArray<TResult>.InnerFactory.FromList(resultList);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,12 @@ public FlatArray<TResult> Map<TResult>(Func<T, TResult> map)

var resultItems = new TResult[length];

InternalForEach(
(i, item) => resultItems[i] = map.Invoke(item));
var counter = 0;
do
{
resultItems[counter] = map.Invoke(items![counter]);
}
while (++counter < length);

return new(resultItems, default);
}
Expand All @@ -30,8 +34,12 @@ public FlatArray<TResult> Map<TResult>(Func<T, int, TResult> map)

var resultItems = new TResult[length];

InternalForEach(
(i, item) => resultItems[i] = map.Invoke(item, i));
var counter = 0;
do
{
resultItems[counter] = map.Invoke(items![counter], counter);
}
while (++counter < length);

return new(resultItems, default);
}
Expand Down

0 comments on commit a5cd743

Please sign in to comment.