@@ -96,13 +96,12 @@ public static void CopyTo(this Tuple source, Tuple target)
96
96
/// Negative value in this map means "skip this element".</param>
97
97
public static void CopyTo ( this Tuple source , Tuple target , IReadOnlyList < int > map )
98
98
{
99
- var packedSource = source as PackedTuple ;
100
- var packedTarget = target as PackedTuple ;
101
-
102
- if ( packedSource != null && packedTarget != null )
99
+ if ( source is PackedTuple packedSource && target is PackedTuple packedTarget ) {
103
100
CopyTupleWithMappingFast ( packedSource , packedTarget , map ) ;
104
- else
101
+ }
102
+ else {
105
103
CopyTupleWithMappingSlow ( source , target , map ) ;
104
+ }
106
105
}
107
106
108
107
/// <summary>
@@ -120,20 +119,18 @@ public static void CopyTo(this Tuple[] sources, Tuple target, Pair<int, int>[] m
120
119
var packedSources = new PackedTuple [ sources . Length ] ;
121
120
122
121
for ( int i = 0 ; i < sources . Length ; i ++ ) {
123
- var packedSource = sources [ i ] as PackedTuple ;
124
- if ( packedSource == null ) {
122
+ if ( sources [ i ] is PackedTuple packedSource ) {
123
+ packedSources [ i ] = packedSource ;
124
+ }
125
+ else {
125
126
haveSlowSource = true ;
126
127
break ;
127
128
}
128
- packedSources [ i ] = packedSource ;
129
129
}
130
130
131
- if ( ! haveSlowSource ) {
132
- var packedTarget = target as PackedTuple ;
133
- if ( packedTarget != null ) {
134
- CopyTupleArrayWithMappingFast ( packedSources , packedTarget , map ) ;
135
- return ;
136
- }
131
+ if ( ! haveSlowSource && target is PackedTuple packedTarget ) {
132
+ CopyTupleArrayWithMappingFast ( packedSources , packedTarget , map ) ;
133
+ return ;
137
134
}
138
135
139
136
CopyTupleArrayWithMappingSlow ( sources , target , map ) ;
@@ -154,20 +151,18 @@ public static void CopyTo(this FixedList3<Tuple> sources, Tuple target, Pair<int
154
151
var packedSources = new FixedList3 < PackedTuple > ( ) ;
155
152
156
153
for ( int i = 0 ; i < sources . Count ; i ++ ) {
157
- var packedSource = sources [ i ] as PackedTuple ;
158
- if ( packedSource == null ) {
154
+ if ( sources [ i ] is PackedTuple packedSource ) {
155
+ packedSources . Push ( packedSource ) ;
156
+ }
157
+ else {
159
158
haveSlowSource = true ;
160
159
break ;
161
160
}
162
- packedSources . Push ( packedSource ) ;
163
161
}
164
162
165
- if ( ! haveSlowSource ) {
166
- var packedTarget = target as PackedTuple ;
167
- if ( packedTarget != null ) {
168
- Copy3TuplesWithMappingFast ( packedSources , packedTarget , map ) ;
169
- return ;
170
- }
163
+ if ( ! haveSlowSource && target is PackedTuple packedTarget ) {
164
+ Copy3TuplesWithMappingFast ( packedSources , packedTarget , map ) ;
165
+ return ;
171
166
}
172
167
173
168
Copy3TuplesWithMappingSlow ( sources , target , map ) ;
@@ -185,7 +180,7 @@ public static void CopyTo(this FixedList3<Tuple> sources, Tuple target, Pair<int
185
180
/// <returns></returns>
186
181
public static Tuple Combine ( this Tuple left , Tuple right )
187
182
{
188
- var transform = new CombineTransform ( false , new [ ] { left . Descriptor , right . Descriptor } ) ;
183
+ var transform = new CombineTransform ( false , new [ ] { left . Descriptor , right . Descriptor } ) ;
189
184
return transform . Apply ( TupleTransformType . TransformedTuple , left , right ) ;
190
185
}
191
186
@@ -229,30 +224,30 @@ public static Tuple GetSegment(this Tuple tuple, in Segment<int> segment)
229
224
/// <exception cref="ArgumentException">Tuple descriptors mismatch.</exception>
230
225
public static void MergeWith ( this Tuple origin , Tuple difference , int startIndex , int length , MergeBehavior behavior )
231
226
{
232
- if ( difference == null )
227
+ if ( difference == null )
233
228
return ;
234
- if ( origin . Descriptor != difference . Descriptor )
229
+ if ( origin . Descriptor != difference . Descriptor )
235
230
throw new ArgumentException ( string . Format ( Strings . ExInvalidTupleDescriptorExpectedDescriptorIs , origin . Descriptor ) , "difference" ) ;
236
231
237
232
var packedOrigin = origin as PackedTuple ;
238
233
var packedDifference = difference as PackedTuple ;
239
- var useFast = packedOrigin != null && packedDifference != null ;
234
+ var useFast = packedOrigin != null && packedDifference != null ;
240
235
241
236
switch ( behavior ) {
242
- case MergeBehavior . PreferOrigin :
243
- if ( useFast )
244
- MergeTuplesPreferOriginFast ( packedOrigin , packedDifference , startIndex , length ) ;
245
- else
246
- MergeTuplesPreferOriginSlow ( origin , difference , startIndex , length ) ;
247
- break ;
248
- case MergeBehavior . PreferDifference :
249
- if ( useFast )
250
- PartiallyCopyTupleFast ( packedDifference , packedOrigin , startIndex , startIndex , length ) ;
251
- else
252
- PartiallyCopyTupleSlow ( difference , origin , startIndex , startIndex , length ) ;
253
- break ;
254
- default :
255
- throw new ArgumentOutOfRangeException ( "behavior" ) ;
237
+ case MergeBehavior . PreferOrigin :
238
+ if ( useFast )
239
+ MergeTuplesPreferOriginFast ( packedOrigin , packedDifference , startIndex , length ) ;
240
+ else
241
+ MergeTuplesPreferOriginSlow ( origin , difference , startIndex , length ) ;
242
+ break ;
243
+ case MergeBehavior . PreferDifference :
244
+ if ( useFast )
245
+ PartiallyCopyTupleFast ( packedDifference , packedOrigin , startIndex , startIndex , length ) ;
246
+ else
247
+ PartiallyCopyTupleSlow ( difference , origin , startIndex , startIndex , length ) ;
248
+ break ;
249
+ default :
250
+ throw new ArgumentOutOfRangeException ( "behavior" ) ;
256
251
}
257
252
}
258
253
@@ -338,7 +333,7 @@ public static void MergeWith(this Tuple origin, Tuple difference)
338
333
/// as the specified <paramref name="source"/> tuple.</returns>
339
334
public static RegularTuple ToRegular ( this Tuple source )
340
335
{
341
- if ( source == null )
336
+ if ( source == null )
342
337
return null ;
343
338
var result = Tuple . Create ( source . Descriptor ) ;
344
339
source . CopyTo ( result ) ;
@@ -353,7 +348,7 @@ public static RegularTuple ToRegular(this Tuple source)
353
348
/// <returns>Read-only version of <paramref name="source"/> tuple.</returns>
354
349
public static Tuple ToReadOnly ( this Tuple source , TupleTransformType transformType )
355
350
{
356
- if ( source == null )
351
+ if ( source == null )
357
352
return null ;
358
353
return ReadOnlyTransform . Instance . Apply ( transformType , source ) ;
359
354
}
@@ -365,7 +360,7 @@ public static Tuple ToReadOnly(this Tuple source, TupleTransformType transformTy
365
360
/// <returns>Fast read-only version of <paramref name="source"/> tuple.</returns>
366
361
public static Tuple ToFastReadOnly ( this Tuple source )
367
362
{
368
- if ( source == null ) {
363
+ if ( source == null ) {
369
364
return null ;
370
365
}
371
366
@@ -386,14 +381,16 @@ public static BitArray GetFieldStateMap(this Tuple target, TupleFieldState reque
386
381
var result = new BitArray ( count ) ;
387
382
388
383
switch ( requestedState ) {
389
- case TupleFieldState . Default :
390
- for ( int i = 0 ; i < count ; i ++ )
391
- result [ i ] = target . GetFieldState ( i ) == 0 ;
392
- break ;
393
- default :
394
- for ( int i = 0 ; i < count ; i ++ )
395
- result [ i ] = ( requestedState & target . GetFieldState ( i ) ) != 0 ;
396
- break ;
384
+ case TupleFieldState . Default :
385
+ for ( int i = 0 ; i < count ; i ++ ) {
386
+ result [ i ] = target . GetFieldState ( i ) == 0 ;
387
+ }
388
+ break ;
389
+ default :
390
+ for ( int i = 0 ; i < count ; i ++ ) {
391
+ result [ i ] = ( requestedState & target . GetFieldState ( i ) ) != 0 ;
392
+ }
393
+ break ;
397
394
}
398
395
return result ;
399
396
}
@@ -407,7 +404,7 @@ public static BitArray GetFieldStateMap(this Tuple target, TupleFieldState reque
407
404
public static void Initialize ( this Tuple target , BitArray nullableMap )
408
405
{
409
406
var descriptor = target . Descriptor ;
410
- if ( descriptor . Count != nullableMap . Count )
407
+ if ( descriptor . Count != nullableMap . Count )
411
408
throw new ArgumentException ( String . Format ( Strings . ExInvalidFieldMapSizeExpectedX , descriptor . Count ) ) ;
412
409
413
410
for ( int i = 0 ; i < target . Count ; i ++ ) {
@@ -434,8 +431,8 @@ private static void CopyValue(Tuple source, int sourceIndex, Tuple target, int t
434
431
435
432
private static void CopyPackedValue ( PackedTuple source , int sourceIndex , PackedTuple target , int targetIndex )
436
433
{
437
- ref var sourceDescriptor = ref source . PackedDescriptor . FieldDescriptors [ sourceIndex ] ;
438
- ref var targetDescriptor = ref target . PackedDescriptor . FieldDescriptors [ targetIndex ] ;
434
+ ref readonly var sourceDescriptor = ref source . PackedDescriptor . FieldDescriptors [ sourceIndex ] ;
435
+ ref readonly var targetDescriptor = ref target . PackedDescriptor . FieldDescriptors [ targetIndex ] ;
439
436
440
437
var fieldState = source . GetFieldState ( sourceDescriptor ) ;
441
438
if ( ! fieldState . IsAvailable ( ) ) {
0 commit comments