Skip to content

Commit 2450b10

Browse files
committed
Fix range constructors for empty and null arrays and sequences
1 parent f0a6161 commit 2450b10

File tree

4 files changed

+205
-34
lines changed

4 files changed

+205
-34
lines changed

RELEASE_NOTES.md

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
- Fixed range constructors for empty and null arrays and sequences
2+
13
### 5.3.10
24
- [IO] Added SymMap constructor overload
35

src/Aardvark.Base/Math/RangesBoxes/Box_auto.cs

+140-30
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,9 @@ public Range1b(Range1b b0, Range1b b1, Range1b b2, Range1b b3)
298298
[MethodImpl(MethodImplOptions.AggressiveInlining)]
299299
public Range1b(byte[] values)
300300
{
301-
Min = Max = values[0];
301+
Min = byte.MaxValue;
302+
Max = byte.MinValue;
303+
if (values == null) return;
302304
long count = values.LongLength;
303305
for (long i = 1; i < count; i++) ExtendBy(values[i]);
304306
}
@@ -310,8 +312,16 @@ public Range1b(byte[] values)
310312
[MethodImpl(MethodImplOptions.AggressiveInlining)]
311313
public Range1b(byte[] values, long start, long count)
312314
{
313-
Min = Max = values[start];
314-
for (long i = start + 1, e = start + count; i < e; i++) ExtendBy(values[i]);
315+
if (count <= 0)
316+
{
317+
Min = byte.MaxValue;
318+
Max = byte.MinValue;
319+
}
320+
else
321+
{
322+
Min = Max = values[start];
323+
for (long i = start + 1, e = start + count; i < e; i++) ExtendBy(values[i]);
324+
}
315325
}
316326

317327
/// <summary>
@@ -322,6 +332,7 @@ public Range1b(IEnumerable<byte> values)
322332
{
323333
Min = byte.MaxValue;
324334
Max = byte.MinValue;
335+
if (values == null) return;
325336
foreach (byte v in values) ExtendBy(v);
326337
}
327338

@@ -1310,7 +1321,9 @@ public Range1sb(Range1sb b0, Range1sb b1, Range1sb b2, Range1sb b3)
13101321
[MethodImpl(MethodImplOptions.AggressiveInlining)]
13111322
public Range1sb(sbyte[] values)
13121323
{
1313-
Min = Max = values[0];
1324+
Min = sbyte.MaxValue;
1325+
Max = sbyte.MinValue;
1326+
if (values == null) return;
13141327
long count = values.LongLength;
13151328
for (long i = 1; i < count; i++) ExtendBy(values[i]);
13161329
}
@@ -1322,8 +1335,16 @@ public Range1sb(sbyte[] values)
13221335
[MethodImpl(MethodImplOptions.AggressiveInlining)]
13231336
public Range1sb(sbyte[] values, long start, long count)
13241337
{
1325-
Min = Max = values[start];
1326-
for (long i = start + 1, e = start + count; i < e; i++) ExtendBy(values[i]);
1338+
if (count <= 0)
1339+
{
1340+
Min = sbyte.MaxValue;
1341+
Max = sbyte.MinValue;
1342+
}
1343+
else
1344+
{
1345+
Min = Max = values[start];
1346+
for (long i = start + 1, e = start + count; i < e; i++) ExtendBy(values[i]);
1347+
}
13271348
}
13281349

13291350
/// <summary>
@@ -1334,6 +1355,7 @@ public Range1sb(IEnumerable<sbyte> values)
13341355
{
13351356
Min = sbyte.MaxValue;
13361357
Max = sbyte.MinValue;
1358+
if (values == null) return;
13371359
foreach (sbyte v in values) ExtendBy(v);
13381360
}
13391361

@@ -2322,7 +2344,9 @@ public Range1s(Range1s b0, Range1s b1, Range1s b2, Range1s b3)
23222344
[MethodImpl(MethodImplOptions.AggressiveInlining)]
23232345
public Range1s(short[] values)
23242346
{
2325-
Min = Max = values[0];
2347+
Min = short.MaxValue;
2348+
Max = short.MinValue;
2349+
if (values == null) return;
23262350
long count = values.LongLength;
23272351
for (long i = 1; i < count; i++) ExtendBy(values[i]);
23282352
}
@@ -2334,8 +2358,16 @@ public Range1s(short[] values)
23342358
[MethodImpl(MethodImplOptions.AggressiveInlining)]
23352359
public Range1s(short[] values, long start, long count)
23362360
{
2337-
Min = Max = values[start];
2338-
for (long i = start + 1, e = start + count; i < e; i++) ExtendBy(values[i]);
2361+
if (count <= 0)
2362+
{
2363+
Min = short.MaxValue;
2364+
Max = short.MinValue;
2365+
}
2366+
else
2367+
{
2368+
Min = Max = values[start];
2369+
for (long i = start + 1, e = start + count; i < e; i++) ExtendBy(values[i]);
2370+
}
23392371
}
23402372

23412373
/// <summary>
@@ -2346,6 +2378,7 @@ public Range1s(IEnumerable<short> values)
23462378
{
23472379
Min = short.MaxValue;
23482380
Max = short.MinValue;
2381+
if (values == null) return;
23492382
foreach (short v in values) ExtendBy(v);
23502383
}
23512384

@@ -3334,7 +3367,9 @@ public Range1us(Range1us b0, Range1us b1, Range1us b2, Range1us b3)
33343367
[MethodImpl(MethodImplOptions.AggressiveInlining)]
33353368
public Range1us(ushort[] values)
33363369
{
3337-
Min = Max = values[0];
3370+
Min = ushort.MaxValue;
3371+
Max = ushort.MinValue;
3372+
if (values == null) return;
33383373
long count = values.LongLength;
33393374
for (long i = 1; i < count; i++) ExtendBy(values[i]);
33403375
}
@@ -3346,8 +3381,16 @@ public Range1us(ushort[] values)
33463381
[MethodImpl(MethodImplOptions.AggressiveInlining)]
33473382
public Range1us(ushort[] values, long start, long count)
33483383
{
3349-
Min = Max = values[start];
3350-
for (long i = start + 1, e = start + count; i < e; i++) ExtendBy(values[i]);
3384+
if (count <= 0)
3385+
{
3386+
Min = ushort.MaxValue;
3387+
Max = ushort.MinValue;
3388+
}
3389+
else
3390+
{
3391+
Min = Max = values[start];
3392+
for (long i = start + 1, e = start + count; i < e; i++) ExtendBy(values[i]);
3393+
}
33513394
}
33523395

33533396
/// <summary>
@@ -3358,6 +3401,7 @@ public Range1us(IEnumerable<ushort> values)
33583401
{
33593402
Min = ushort.MaxValue;
33603403
Max = ushort.MinValue;
3404+
if (values == null) return;
33613405
foreach (ushort v in values) ExtendBy(v);
33623406
}
33633407

@@ -4356,7 +4400,9 @@ public Range1i(Range1i b0, Range1i b1, Range1i b2, Range1i b3)
43564400
[MethodImpl(MethodImplOptions.AggressiveInlining)]
43574401
public Range1i(int[] values)
43584402
{
4359-
Min = Max = values[0];
4403+
Min = int.MaxValue;
4404+
Max = int.MinValue;
4405+
if (values == null) return;
43604406
long count = values.LongLength;
43614407
for (long i = 1; i < count; i++) ExtendBy(values[i]);
43624408
}
@@ -4368,8 +4414,16 @@ public Range1i(int[] values)
43684414
[MethodImpl(MethodImplOptions.AggressiveInlining)]
43694415
public Range1i(int[] values, long start, long count)
43704416
{
4371-
Min = Max = values[start];
4372-
for (long i = start + 1, e = start + count; i < e; i++) ExtendBy(values[i]);
4417+
if (count <= 0)
4418+
{
4419+
Min = int.MaxValue;
4420+
Max = int.MinValue;
4421+
}
4422+
else
4423+
{
4424+
Min = Max = values[start];
4425+
for (long i = start + 1, e = start + count; i < e; i++) ExtendBy(values[i]);
4426+
}
43734427
}
43744428

43754429
/// <summary>
@@ -4380,6 +4434,7 @@ public Range1i(IEnumerable<int> values)
43804434
{
43814435
Min = int.MaxValue;
43824436
Max = int.MinValue;
4437+
if (values == null) return;
43834438
foreach (int v in values) ExtendBy(v);
43844439
}
43854440

@@ -5390,7 +5445,9 @@ public Range1ui(Range1ui b0, Range1ui b1, Range1ui b2, Range1ui b3)
53905445
[MethodImpl(MethodImplOptions.AggressiveInlining)]
53915446
public Range1ui(uint[] values)
53925447
{
5393-
Min = Max = values[0];
5448+
Min = uint.MaxValue;
5449+
Max = uint.MinValue;
5450+
if (values == null) return;
53945451
long count = values.LongLength;
53955452
for (long i = 1; i < count; i++) ExtendBy(values[i]);
53965453
}
@@ -5402,8 +5459,16 @@ public Range1ui(uint[] values)
54025459
[MethodImpl(MethodImplOptions.AggressiveInlining)]
54035460
public Range1ui(uint[] values, long start, long count)
54045461
{
5405-
Min = Max = values[start];
5406-
for (long i = start + 1, e = start + count; i < e; i++) ExtendBy(values[i]);
5462+
if (count <= 0)
5463+
{
5464+
Min = uint.MaxValue;
5465+
Max = uint.MinValue;
5466+
}
5467+
else
5468+
{
5469+
Min = Max = values[start];
5470+
for (long i = start + 1, e = start + count; i < e; i++) ExtendBy(values[i]);
5471+
}
54075472
}
54085473

54095474
/// <summary>
@@ -5414,6 +5479,7 @@ public Range1ui(IEnumerable<uint> values)
54145479
{
54155480
Min = uint.MaxValue;
54165481
Max = uint.MinValue;
5482+
if (values == null) return;
54175483
foreach (uint v in values) ExtendBy(v);
54185484
}
54195485

@@ -6424,7 +6490,9 @@ public Range1l(Range1l b0, Range1l b1, Range1l b2, Range1l b3)
64246490
[MethodImpl(MethodImplOptions.AggressiveInlining)]
64256491
public Range1l(long[] values)
64266492
{
6427-
Min = Max = values[0];
6493+
Min = long.MaxValue;
6494+
Max = long.MinValue;
6495+
if (values == null) return;
64286496
long count = values.LongLength;
64296497
for (long i = 1; i < count; i++) ExtendBy(values[i]);
64306498
}
@@ -6436,8 +6504,16 @@ public Range1l(long[] values)
64366504
[MethodImpl(MethodImplOptions.AggressiveInlining)]
64376505
public Range1l(long[] values, long start, long count)
64386506
{
6439-
Min = Max = values[start];
6440-
for (long i = start + 1, e = start + count; i < e; i++) ExtendBy(values[i]);
6507+
if (count <= 0)
6508+
{
6509+
Min = long.MaxValue;
6510+
Max = long.MinValue;
6511+
}
6512+
else
6513+
{
6514+
Min = Max = values[start];
6515+
for (long i = start + 1, e = start + count; i < e; i++) ExtendBy(values[i]);
6516+
}
64416517
}
64426518

64436519
/// <summary>
@@ -6448,6 +6524,7 @@ public Range1l(IEnumerable<long> values)
64486524
{
64496525
Min = long.MaxValue;
64506526
Max = long.MinValue;
6527+
if (values == null) return;
64516528
foreach (long v in values) ExtendBy(v);
64526529
}
64536530

@@ -7448,7 +7525,9 @@ public Range1ul(Range1ul b0, Range1ul b1, Range1ul b2, Range1ul b3)
74487525
[MethodImpl(MethodImplOptions.AggressiveInlining)]
74497526
public Range1ul(ulong[] values)
74507527
{
7451-
Min = Max = values[0];
7528+
Min = ulong.MaxValue;
7529+
Max = ulong.MinValue;
7530+
if (values == null) return;
74527531
long count = values.LongLength;
74537532
for (long i = 1; i < count; i++) ExtendBy(values[i]);
74547533
}
@@ -7460,8 +7539,16 @@ public Range1ul(ulong[] values)
74607539
[MethodImpl(MethodImplOptions.AggressiveInlining)]
74617540
public Range1ul(ulong[] values, long start, long count)
74627541
{
7463-
Min = Max = values[start];
7464-
for (long i = start + 1, e = start + count; i < e; i++) ExtendBy(values[i]);
7542+
if (count <= 0)
7543+
{
7544+
Min = ulong.MaxValue;
7545+
Max = ulong.MinValue;
7546+
}
7547+
else
7548+
{
7549+
Min = Max = values[start];
7550+
for (long i = start + 1, e = start + count; i < e; i++) ExtendBy(values[i]);
7551+
}
74657552
}
74667553

74677554
/// <summary>
@@ -7472,6 +7559,7 @@ public Range1ul(IEnumerable<ulong> values)
74727559
{
74737560
Min = ulong.MaxValue;
74747561
Max = ulong.MinValue;
7562+
if (values == null) return;
74757563
foreach (ulong v in values) ExtendBy(v);
74767564
}
74777565

@@ -8470,7 +8558,9 @@ public Range1f(Range1f b0, Range1f b1, Range1f b2, Range1f b3)
84708558
[MethodImpl(MethodImplOptions.AggressiveInlining)]
84718559
public Range1f(float[] values)
84728560
{
8473-
Min = Max = values[0];
8561+
Min = Constant<float>.ParseableMaxValue;
8562+
Max = Constant<float>.ParseableMinValue;
8563+
if (values == null) return;
84748564
long count = values.LongLength;
84758565
for (long i = 1; i < count; i++) ExtendBy(values[i]);
84768566
}
@@ -8482,8 +8572,16 @@ public Range1f(float[] values)
84828572
[MethodImpl(MethodImplOptions.AggressiveInlining)]
84838573
public Range1f(float[] values, long start, long count)
84848574
{
8485-
Min = Max = values[start];
8486-
for (long i = start + 1, e = start + count; i < e; i++) ExtendBy(values[i]);
8575+
if (count <= 0)
8576+
{
8577+
Min = Constant<float>.ParseableMaxValue;
8578+
Max = Constant<float>.ParseableMinValue;
8579+
}
8580+
else
8581+
{
8582+
Min = Max = values[start];
8583+
for (long i = start + 1, e = start + count; i < e; i++) ExtendBy(values[i]);
8584+
}
84878585
}
84888586

84898587
/// <summary>
@@ -8494,6 +8592,7 @@ public Range1f(IEnumerable<float> values)
84948592
{
84958593
Min = Constant<float>.ParseableMaxValue;
84968594
Max = Constant<float>.ParseableMinValue;
8595+
if (values == null) return;
84978596
foreach (float v in values) ExtendBy(v);
84988597
}
84998598

@@ -9546,7 +9645,9 @@ public Range1d(Range1d b0, Range1d b1, Range1d b2, Range1d b3)
95469645
[MethodImpl(MethodImplOptions.AggressiveInlining)]
95479646
public Range1d(double[] values)
95489647
{
9549-
Min = Max = values[0];
9648+
Min = Constant<double>.ParseableMaxValue;
9649+
Max = Constant<double>.ParseableMinValue;
9650+
if (values == null) return;
95509651
long count = values.LongLength;
95519652
for (long i = 1; i < count; i++) ExtendBy(values[i]);
95529653
}
@@ -9558,8 +9659,16 @@ public Range1d(double[] values)
95589659
[MethodImpl(MethodImplOptions.AggressiveInlining)]
95599660
public Range1d(double[] values, long start, long count)
95609661
{
9561-
Min = Max = values[start];
9562-
for (long i = start + 1, e = start + count; i < e; i++) ExtendBy(values[i]);
9662+
if (count <= 0)
9663+
{
9664+
Min = Constant<double>.ParseableMaxValue;
9665+
Max = Constant<double>.ParseableMinValue;
9666+
}
9667+
else
9668+
{
9669+
Min = Max = values[start];
9670+
for (long i = start + 1, e = start + count; i < e; i++) ExtendBy(values[i]);
9671+
}
95639672
}
95649673

95659674
/// <summary>
@@ -9570,6 +9679,7 @@ public Range1d(IEnumerable<double> values)
95709679
{
95719680
Min = Constant<double>.ParseableMaxValue;
95729681
Max = Constant<double>.ParseableMinValue;
9682+
if (values == null) return;
95739683
foreach (double v in values) ExtendBy(v);
95749684
}
95759685

0 commit comments

Comments
 (0)