@@ -47,32 +47,32 @@ public void SetValue<T>(PackedTuple tuple, ref PackedFieldDescriptor descriptor,
47
47
SetUntypedValue ( tuple , ref descriptor , value ) ;
48
48
}
49
49
50
- public T GetValue < T > ( PackedTuple tuple , ref PackedFieldDescriptor descriptor , bool isNullable , out TupleFieldState fieldState )
50
+ public T GetValue < T > ( PackedTuple tuple , in PackedFieldDescriptor descriptor , bool isNullable , out TupleFieldState fieldState )
51
51
{
52
52
var getter = ( isNullable ? NullableGetter : Getter ) as GetValueDelegate < T > ;
53
53
if ( getter != null )
54
- return getter . Invoke ( tuple , ref descriptor , out fieldState ) ;
54
+ return getter . Invoke ( tuple , descriptor , out fieldState ) ;
55
55
var targetType = typeof ( T ) ;
56
56
57
57
//Dirty hack of nullable enum reading
58
58
if ( isNullable )
59
59
targetType = Nullable . GetUnderlyingType ( targetType ) ?? targetType ;
60
60
if ( targetType . IsEnum )
61
- return ( T ) Enum . ToObject ( targetType , GetUntypedValue ( tuple , ref descriptor , out fieldState ) ) ;
62
- return ( T ) GetUntypedValue ( tuple , ref descriptor , out fieldState ) ;
61
+ return ( T ) Enum . ToObject ( targetType , GetUntypedValue ( tuple , descriptor , out fieldState ) ) ;
62
+ return ( T ) GetUntypedValue ( tuple , descriptor , out fieldState ) ;
63
63
}
64
64
65
- public abstract object GetUntypedValue ( PackedTuple tuple , ref PackedFieldDescriptor descriptor , out TupleFieldState fieldState ) ;
65
+ public abstract object GetUntypedValue ( PackedTuple tuple , in PackedFieldDescriptor descriptor , out TupleFieldState fieldState ) ;
66
66
67
67
public abstract void SetUntypedValue ( PackedTuple tuple , ref PackedFieldDescriptor descriptor , object value ) ;
68
68
69
69
public abstract void CopyValue ( PackedTuple source , ref PackedFieldDescriptor sourceDescriptor ,
70
70
PackedTuple target , ref PackedFieldDescriptor targetDescriptor ) ;
71
71
72
- public abstract bool ValueEquals ( PackedTuple left , ref PackedFieldDescriptor leftDescriptor ,
73
- PackedTuple right , ref PackedFieldDescriptor rightDescriptor ) ;
72
+ public abstract bool ValueEquals ( PackedTuple left , in PackedFieldDescriptor leftDescriptor ,
73
+ PackedTuple right , in PackedFieldDescriptor rightDescriptor ) ;
74
74
75
- public abstract int GetValueHashCode ( PackedTuple tuple , ref PackedFieldDescriptor descriptor ) ;
75
+ public abstract int GetValueHashCode ( PackedTuple tuple , in PackedFieldDescriptor descriptor ) ;
76
76
77
77
protected PackedFieldAccessor ( int rank , byte index )
78
78
{
@@ -101,9 +101,9 @@ protected PackedFieldAccessor(int rank, byte index)
101
101
102
102
internal sealed class ObjectFieldAccessor : PackedFieldAccessor
103
103
{
104
- public override object GetUntypedValue ( PackedTuple tuple , ref PackedFieldDescriptor descriptor , out TupleFieldState fieldState )
104
+ public override object GetUntypedValue ( PackedTuple tuple , in PackedFieldDescriptor descriptor , out TupleFieldState fieldState )
105
105
{
106
- var state = tuple . GetFieldState ( ref descriptor ) ;
106
+ var state = tuple . GetFieldState ( descriptor ) ;
107
107
fieldState = state ;
108
108
return state == TupleFieldState . Available ? tuple . Objects [ descriptor . ObjectIndex ] : null ;
109
109
}
@@ -123,15 +123,15 @@ public override void CopyValue(PackedTuple source, ref PackedFieldDescriptor sou
123
123
target . Objects [ targetDescriptor . ObjectIndex ] = source . Objects [ sourceDescriptor . ObjectIndex ] ;
124
124
}
125
125
126
- public override bool ValueEquals ( PackedTuple left , ref PackedFieldDescriptor leftDescriptor ,
127
- PackedTuple right , ref PackedFieldDescriptor rightDescriptor )
126
+ public override bool ValueEquals ( PackedTuple left , in PackedFieldDescriptor leftDescriptor ,
127
+ PackedTuple right , in PackedFieldDescriptor rightDescriptor )
128
128
{
129
129
var leftValue = left . Objects [ leftDescriptor . ObjectIndex ] ;
130
130
var rightValue = right . Objects [ rightDescriptor . ObjectIndex ] ;
131
131
return leftValue . Equals ( rightValue ) ;
132
132
}
133
133
134
- public override int GetValueHashCode ( PackedTuple tuple , ref PackedFieldDescriptor descriptor )
134
+ public override int GetValueHashCode ( PackedTuple tuple , in PackedFieldDescriptor descriptor )
135
135
{
136
136
return tuple . Objects [ descriptor . ObjectIndex ] . GetHashCode ( ) ;
137
137
}
@@ -167,11 +167,11 @@ internal abstract class ValueFieldAccessor<T> : ValueFieldAccessor
167
167
168
168
protected virtual T Decode ( long [ ] values , int offset ) => throw new NotSupportedException ( ) ;
169
169
170
- public override object GetUntypedValue ( PackedTuple tuple , ref PackedFieldDescriptor descriptor , out TupleFieldState fieldState )
170
+ public override object GetUntypedValue ( PackedTuple tuple , in PackedFieldDescriptor descriptor , out TupleFieldState fieldState )
171
171
{
172
- var state = tuple . GetFieldState ( ref descriptor ) ;
172
+ var state = tuple . GetFieldState ( descriptor ) ;
173
173
fieldState = state ;
174
- return state == TupleFieldState . Available ? ( object ) Load ( tuple , ref descriptor ) : null ;
174
+ return state == TupleFieldState . Available ? ( object ) Load ( tuple , descriptor ) : null ;
175
175
}
176
176
177
177
public override void SetUntypedValue ( PackedTuple tuple , ref PackedFieldDescriptor descriptor , object value )
@@ -188,34 +188,34 @@ public override void SetUntypedValue(PackedTuple tuple, ref PackedFieldDescripto
188
188
public override void CopyValue ( PackedTuple source , ref PackedFieldDescriptor sourceDescriptor ,
189
189
PackedTuple target , ref PackedFieldDescriptor targetDescriptor )
190
190
{
191
- Store ( target , ref targetDescriptor , Load ( source , ref sourceDescriptor ) ) ;
191
+ Store ( target , ref targetDescriptor , Load ( source , sourceDescriptor ) ) ;
192
192
}
193
193
194
- public override bool ValueEquals ( PackedTuple left , ref PackedFieldDescriptor leftDescriptor ,
195
- PackedTuple right , ref PackedFieldDescriptor rightDescriptor )
194
+ public override bool ValueEquals ( PackedTuple left , in PackedFieldDescriptor leftDescriptor ,
195
+ PackedTuple right , in PackedFieldDescriptor rightDescriptor )
196
196
{
197
- var leftValue = Load ( left , ref leftDescriptor ) ;
198
- var rightValue = Load ( right , ref rightDescriptor ) ;
197
+ var leftValue = Load ( left , leftDescriptor ) ;
198
+ var rightValue = Load ( right , rightDescriptor ) ;
199
199
return leftValue . Equals ( rightValue ) ;
200
200
}
201
201
202
- public override int GetValueHashCode ( PackedTuple tuple , ref PackedFieldDescriptor descriptor )
202
+ public override int GetValueHashCode ( PackedTuple tuple , in PackedFieldDescriptor descriptor )
203
203
{
204
- return Load ( tuple , ref descriptor ) . GetHashCode ( ) ;
204
+ return Load ( tuple , descriptor ) . GetHashCode ( ) ;
205
205
}
206
206
207
- private T GetValue ( PackedTuple tuple , ref PackedFieldDescriptor descriptor , out TupleFieldState fieldState )
207
+ private T GetValue ( PackedTuple tuple , in PackedFieldDescriptor descriptor , out TupleFieldState fieldState )
208
208
{
209
- var state = tuple . GetFieldState ( ref descriptor ) ;
209
+ var state = tuple . GetFieldState ( descriptor ) ;
210
210
fieldState = state ;
211
- return state == TupleFieldState . Available ? Load ( tuple , ref descriptor ) : DefaultValue ;
211
+ return state == TupleFieldState . Available ? Load ( tuple , descriptor ) : DefaultValue ;
212
212
}
213
213
214
- private T ? GetNullableValue ( PackedTuple tuple , ref PackedFieldDescriptor descriptor , out TupleFieldState fieldState )
214
+ private T ? GetNullableValue ( PackedTuple tuple , in PackedFieldDescriptor descriptor , out TupleFieldState fieldState )
215
215
{
216
- var state = tuple . GetFieldState ( ref descriptor ) ;
216
+ var state = tuple . GetFieldState ( descriptor ) ;
217
217
fieldState = state ;
218
- return state == TupleFieldState . Available ? Load ( tuple , ref descriptor ) : NullValue ;
218
+ return state == TupleFieldState . Available ? Load ( tuple , descriptor ) : NullValue ;
219
219
}
220
220
221
221
private void SetValue ( PackedTuple tuple , ref PackedFieldDescriptor descriptor , T value )
@@ -249,7 +249,7 @@ private void Store(PackedTuple tuple, ref PackedFieldDescriptor d, T value)
249
249
block = ( block & ~ mask ) | ( ( encoded << valueBitOffset ) & mask ) ;
250
250
}
251
251
252
- private T Load ( PackedTuple tuple , ref PackedFieldDescriptor d )
252
+ private T Load ( PackedTuple tuple , in PackedFieldDescriptor d )
253
253
{
254
254
var valueIndex = d . ValueIndex ;
255
255
if ( Rank > 6 ) {
0 commit comments