- Timestamp:
- 11/24/15 17:29:09 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/PersistenceOverhaul/HeuristicLab.Persistence/4.0/Transformers/Transformers.cs
r13367 r13375 182 182 protected abstract T ToValueType(IEnumerable<int> value, Type type, Mapper mapper); 183 183 } 184 public abstract class LongArrayBoxTransformer<T> : BoxTransformer<T> { 185 protected override void Populate(Box.Builder box, T value, Mapper mapper) { 186 var b = LongArrayBox.CreateBuilder(); 187 b.AddRangeValues(ToBoxType(value, mapper)); 188 box.SetExtension<LongArrayBox>(LongArrayBox.LongArray, b.Build()); 189 } 190 protected override T Extract(Box box, Type type, Mapper mapper) { 191 return ToValueType(box.GetExtension(LongArrayBox.LongArray).ValuesList, type, mapper); 192 } 193 protected abstract IEnumerable<long> ToBoxType(T value, Mapper mapper); 194 protected abstract T ToValueType(IEnumerable<long> value, Type type, Mapper mapper); 195 } 196 public abstract class UnsignedIntArrayBoxTransformer<T> : BoxTransformer<T> { 197 protected override void Populate(Box.Builder box, T value, Mapper mapper) { 198 var b = UnsignedIntArrayBox.CreateBuilder(); 199 b.AddRangeValues(ToBoxType(value, mapper)); 200 box.SetExtension<UnsignedIntArrayBox>(UnsignedIntArrayBox.UnsignedIntArray, b.Build()); 201 } 202 protected override T Extract(Box box, Type type, Mapper mapper) { 203 return ToValueType(box.GetExtension(UnsignedIntArrayBox.UnsignedIntArray).ValuesList, type, mapper); 204 } 205 protected abstract IEnumerable<uint> ToBoxType(T value, Mapper mapper); 206 protected abstract T ToValueType(IEnumerable<uint> value, Type type, Mapper mapper); 207 } 208 public abstract class UnsignedLongArrayBoxTransformer<T> : BoxTransformer<T> { 209 protected override void Populate(Box.Builder box, T value, Mapper mapper) { 210 var b = UnsignedLongArrayBox.CreateBuilder(); 211 b.AddRangeValues(ToBoxType(value, mapper)); 212 box.SetExtension<UnsignedLongArrayBox>(UnsignedLongArrayBox.UnsignedLongArray, b.Build()); 213 } 214 protected override T Extract(Box box, Type type, Mapper mapper) { 215 return ToValueType(box.GetExtension(UnsignedLongArrayBox.UnsignedLongArray).ValuesList, type, mapper); 216 } 217 protected abstract IEnumerable<ulong> ToBoxType(T value, Mapper mapper); 218 protected abstract T ToValueType(IEnumerable<ulong> value, Type type, Mapper mapper); 219 } 220 public abstract class FloatArrayBoxTransformer<T> : BoxTransformer<T> { 221 protected override void Populate(Box.Builder box, T value, Mapper mapper) { 222 var b = FloatArrayBox.CreateBuilder(); 223 b.AddRangeValues(ToBoxType(value, mapper)); 224 box.SetExtension<FloatArrayBox>(FloatArrayBox.FloatArray, b.Build()); 225 } 226 protected override T Extract(Box box, Type type, Mapper mapper) { 227 return ToValueType(box.GetExtension(FloatArrayBox.FloatArray).ValuesList, type, mapper); 228 } 229 protected abstract IEnumerable<float> ToBoxType(T value, Mapper mapper); 230 protected abstract T ToValueType(IEnumerable<float> value, Type type, Mapper mapper); 231 } 232 public abstract class DoubleArrayBoxTransformer<T> : BoxTransformer<T> { 233 protected override void Populate(Box.Builder box, T value, Mapper mapper) { 234 var b = DoubleArrayBox.CreateBuilder(); 235 b.AddRangeValues(ToBoxType(value, mapper)); 236 box.SetExtension<DoubleArrayBox>(DoubleArrayBox.DoubleArray, b.Build()); 237 } 238 protected override T Extract(Box box, Type type, Mapper mapper) { 239 return ToValueType(box.GetExtension(DoubleArrayBox.DoubleArray).ValuesList, type, mapper); 240 } 241 protected abstract IEnumerable<double> ToBoxType(T value, Mapper mapper); 242 protected abstract T ToValueType(IEnumerable<double> value, Type type, Mapper mapper); 243 } 244 public abstract class StringArrayBoxTransformer<T> : BoxTransformer<T> { 245 protected override void Populate(Box.Builder box, T value, Mapper mapper) { 246 var b = StringArrayBox.CreateBuilder(); 247 b.AddRangeValues(ToBoxType(value, mapper)); 248 box.SetExtension<StringArrayBox>(StringArrayBox.StringArray, b.Build()); 249 } 250 protected override T Extract(Box box, Type type, Mapper mapper) { 251 return ToValueType(box.GetExtension(StringArrayBox.StringArray).ValuesList, type, mapper); 252 } 253 protected abstract IEnumerable<string> ToBoxType(T value, Mapper mapper); 254 protected abstract T ToValueType(IEnumerable<string> value, Type type, Mapper mapper); 255 } 184 256 #endregion 185 257 … … 315 387 protected override bool[] ToValueType(IEnumerable<bool> value, Type type, Mapper mapper) { return value.ToArray(); } 316 388 } 389 390 [Transformer("FF89F6D1-CDE3-498E-9166-F70AC6EB01F1", 301)] 391 internal sealed class ByteArrayTransformer : UnsignedIntArrayBoxTransformer<byte[]> { 392 protected override IEnumerable<uint> ToBoxType(byte[] value, Mapper mapper) { return value.Cast<uint>(); } 393 protected override byte[] ToValueType(IEnumerable<uint> value, Type type, Mapper mapper) { return value.Cast<byte>().ToArray(); } 394 } 395 396 [Transformer("B49B3F2D-2E97-4BAB-8705-8D29DA707C6A", 302)] 397 internal sealed class SByteArrayTransformer : IntArrayBoxTransformer<sbyte[]> { 398 protected override IEnumerable<int> ToBoxType(sbyte[] value, Mapper mapper) { return value.Cast<int>(); } 399 protected override sbyte[] ToValueType(IEnumerable<int> value, Type type, Mapper mapper) { return value.Cast<sbyte>().ToArray(); } 400 } 401 402 [Transformer("2811FDD4-6800-4CBA-86D7-9071ED5775ED", 303)] 403 internal sealed class ShortArrayTransformer : IntArrayBoxTransformer<short[]> { 404 protected override IEnumerable<int> ToBoxType(short[] value, Mapper mapper) { return value.Cast<int>(); } 405 protected override short[] ToValueType(IEnumerable<int> value, Type type, Mapper mapper) { return value.Cast<short>().ToArray(); } 406 } 407 408 [Transformer("1AAC2625-356C-40BC-8CB4-15CB3D047EB8", 304)] 409 internal sealed class UShortArrayTransformer : UnsignedIntArrayBoxTransformer<ushort[]> { 410 protected override IEnumerable<uint> ToBoxType(ushort[] value, Mapper mapper) { return value.Cast<uint>(); } 411 protected override ushort[] ToValueType(IEnumerable<uint> value, Type type, Mapper mapper) { return value.Cast<ushort>().ToArray(); } 412 } 413 414 [Transformer("12F19098-5D49-4C23-8897-69087F1C146D", 305)] 415 internal sealed class CharArrayTransformer : UnsignedIntArrayBoxTransformer<char[]> { 416 protected override IEnumerable<uint> ToBoxType(char[] value, Mapper mapper) { return value.Cast<uint>(); } 417 protected override char[] ToValueType(IEnumerable<uint> value, Type type, Mapper mapper) { return value.Cast<char>().ToArray(); } 418 } 419 317 420 [Transformer("5F6DC3BC-4433-4AE9-A636-4BD126F7DACD", 306)] 318 421 internal sealed class IntArrayTransformer : IntArrayBoxTransformer<int[]> { … … 320 423 protected override int[] ToValueType(IEnumerable<int> value, Type type, Mapper mapper) { return value.ToArray(); } 321 424 } 425 426 [Transformer("3F10274F-D350-4C82-89EA-A5EB36D4EFCC", 307)] 427 internal sealed class UIntArrayTransformer : UnsignedIntArrayBoxTransformer<uint[]> { 428 protected override IEnumerable<uint> ToBoxType(uint[] value, Mapper mapper) { return value; } 429 protected override uint[] ToValueType(IEnumerable<uint> value, Type type, Mapper mapper) { return value.ToArray(); } 430 } 431 432 [Transformer("E9D550E2-57F7-47F3-803D-37A619DA1A5C", 308)] 433 internal sealed class LongArrayTransformer : LongArrayBoxTransformer<long[]> { 434 protected override IEnumerable<long> ToBoxType(long[] value, Mapper mapper) { return value; } 435 protected override long[] ToValueType(IEnumerable<long> value, Type type, Mapper mapper) { return value.ToArray(); } 436 } 437 438 [Transformer("C02A205B-2176-4282-AC2B-ADEF96DDBE24", 309)] 439 internal sealed class ULongArrayTransformer : UnsignedLongArrayBoxTransformer<ulong[]> { 440 protected override IEnumerable<ulong> ToBoxType(ulong[] value, Mapper mapper) { return value; } 441 protected override ulong[] ToValueType(IEnumerable<ulong> value, Type type, Mapper mapper) { return value.ToArray(); } 442 } 443 444 [Transformer("3C4590D9-C76E-4AFB-98FD-E50D3D051648", 310)] 445 internal sealed class FloatArrayTransformer : FloatArrayBoxTransformer<float[]> { 446 protected override IEnumerable<float> ToBoxType(float[] value, Mapper mapper) { return value; } 447 protected override float[] ToValueType(IEnumerable<float> value, Type type, Mapper mapper) { return value.ToArray(); } 448 } 449 450 [Transformer("FB98C399-9323-4470-9A85-9186C2B2D5D4", 311)] 451 internal sealed class DoubleArrayTransformer : DoubleArrayBoxTransformer<double[]> { 452 protected override IEnumerable<double> ToBoxType(double[] value, Mapper mapper) { return value; } 453 protected override double[] ToValueType(IEnumerable<double> value, Type type, Mapper mapper) { return value.ToArray(); } 454 } 455 456 [Transformer("68332513-9CF1-47FA-A093-6DDB663186EC", 312)] 457 internal sealed class StringArrayTransformer : StringArrayBoxTransformer<string[]> { 458 protected override IEnumerable<string> ToBoxType(string[] value, Mapper mapper) { return value; } 459 protected override string[] ToValueType(IEnumerable<string> value, Type type, Mapper mapper) { return value.ToArray(); } 460 } 322 461 #endregion 323 462 }
Note: See TracChangeset
for help on using the changeset viewer.