]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/AliSimpleValue.cxx
Update rawdata format for trigger (Christian)
[u/mrichter/AliRoot.git] / STEER / AliSimpleValue.cxx
CommitLineData
57459306 1/**************************************************************************
46d65de9 2
57459306 3 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
46d65de9 4
57459306 5 * *
46d65de9 6
57459306 7 * Author: The ALICE Off-line Project. *
46d65de9 8
57459306 9 * Contributors are mentioned in the code where appropriate. *
46d65de9 10
57459306 11 * *
46d65de9 12
57459306 13 * Permission to use, copy, modify and distribute this software and its *
46d65de9 14
57459306 15 * documentation strictly for non-commercial purposes is hereby granted *
46d65de9 16
57459306 17 * without fee, provided that the above copyright notice appears in all *
46d65de9 18
57459306 19 * copies and that both the copyright notice and this permission notice *
46d65de9 20
57459306 21 * appear in the supporting documentation. The authors make no claims *
46d65de9 22
57459306 23 * about the suitability of this software for any purpose. It is *
46d65de9 24
57459306 25 * provided "as is" without express or implied warranty. *
46d65de9 26
57459306 27 **************************************************************************/
28
46d65de9 29
30
57459306 31/*
46d65de9 32
57459306 33$Log$
46d65de9 34
35Revision 1.2 2006/06/13 11:19:48 hristov
36
37Coding conventions (Alberto)
38
39
40
0bd5d12b 41Revision 1.1 2006/06/02 14:14:36 hristov
46d65de9 42
0bd5d12b 43Separate library for CDB (Jan)
44
46d65de9 45
46
57459306 47Revision 1.2 2006/03/07 07:52:34 hristov
46d65de9 48
57459306 49New version (B.Yordanov)
50
46d65de9 51
52
57459306 53Revision 1.2 2005/11/17 14:43:23 byordano
46d65de9 54
57459306 55import to local CVS
56
46d65de9 57
58
57459306 59Revision 1.1.1.1 2005/10/28 07:33:58 hristov
46d65de9 60
57459306 61Initial import as subdirectory in AliRoot
62
46d65de9 63
64
57459306 65Revision 1.1.1.1 2005/09/12 22:11:40 byordano
46d65de9 66
57459306 67SHUTTLE package
68
46d65de9 69
70
57459306 71Revision 1.2 2005/08/30 10:53:23 byordano
46d65de9 72
57459306 73some more descriptions added
74
46d65de9 75
76
57459306 77*/
78
46d65de9 79
80
57459306 81//
46d65de9 82
57459306 83// This class is a simple wrapper of
46d65de9 84
57459306 85// all primitive types used in PVSS SCADA system.
46d65de9 86
87// Usage examples: AliSimpleValue sim(20) -> Int type
88
89// simfl.SetFloat(3.5) -> Float type
90
91// Char_t chararr[4] = {'c','i','a','o'};
92
93// AliSimpleValue simchar(4,chararr); -> DynChar type
94
57459306 95//
96
97
46d65de9 98
99
100
57459306 101#include "AliSimpleValue.h"
102
46d65de9 103
104
57459306 105#include "AliLog.h"
46d65de9 106
57459306 107#include <TClass.h>
108
46d65de9 109
110
0bd5d12b 111//______________________________________________________________________
46d65de9 112
0bd5d12b 113TObject* AliSimpleValue::AliBoolHolder::Clone(const char* /*name*/) const {
46d65de9 114
0bd5d12b 115// Clone a value
116
46d65de9 117
118
119 return new AliBoolHolder(fValue);
120
57459306 121}
122
46d65de9 123
124
0bd5d12b 125//______________________________________________________________________
46d65de9 126
0bd5d12b 127Bool_t AliSimpleValue::AliBoolHolder::IsEqual(const TObject* obj) const {
46d65de9 128
0bd5d12b 129// check whether this is equal to obj
46d65de9 130
57459306 131
46d65de9 132
57459306 133 if (this == obj) {
46d65de9 134
57459306 135 return kTRUE;
46d65de9 136
57459306 137 }
138
46d65de9 139
140
0bd5d12b 141 if (AliBoolHolder::Class() != obj->IsA()) {
46d65de9 142
57459306 143 return kFALSE;
46d65de9 144
57459306 145 }
146
46d65de9 147
148
149 return fValue == ((const AliBoolHolder*) obj)->GetValue();
150
57459306 151}
152
46d65de9 153
154
0bd5d12b 155//______________________________________________________________________
46d65de9 156
0bd5d12b 157TObject* AliSimpleValue::AliByteHolder::Clone(const char* /*name*/) const {
46d65de9 158
0bd5d12b 159// Clone a value
160
46d65de9 161
162
0bd5d12b 163 return new AliByteHolder(fValue);
46d65de9 164
57459306 165}
166
46d65de9 167
168
0bd5d12b 169//______________________________________________________________________
46d65de9 170
0bd5d12b 171Bool_t AliSimpleValue::AliByteHolder::IsEqual(const TObject* obj) const {
46d65de9 172
0bd5d12b 173// check whether this is equal to obj
57459306 174
46d65de9 175
176
57459306 177 if (this == obj) {
46d65de9 178
57459306 179 return kTRUE;
46d65de9 180
57459306 181 }
182
46d65de9 183
184
0bd5d12b 185 if (AliByteHolder::Class() != obj->IsA()) {
46d65de9 186
57459306 187 return kFALSE;
46d65de9 188
57459306 189 }
190
46d65de9 191
192
193 return fValue == ((const AliByteHolder*) obj)->GetValue();
194
57459306 195}
196
46d65de9 197
198
0bd5d12b 199//______________________________________________________________________
46d65de9 200
0bd5d12b 201TObject* AliSimpleValue::AliIntHolder::Clone(const char* /*name*/) const {
46d65de9 202
0bd5d12b 203// Clone a value
46d65de9 204
0bd5d12b 205 return new AliIntHolder(fValue);
46d65de9 206
57459306 207}
208
46d65de9 209
210
0bd5d12b 211//______________________________________________________________________
46d65de9 212
0bd5d12b 213Bool_t AliSimpleValue::AliIntHolder::IsEqual(const TObject* obj) const {
46d65de9 214
0bd5d12b 215// check whether this is equal to obj
57459306 216
46d65de9 217
218
57459306 219 if (this == obj) {
46d65de9 220
57459306 221 return kTRUE;
46d65de9 222
57459306 223 }
224
46d65de9 225
226
0bd5d12b 227 if (AliIntHolder::Class() != obj->IsA()) {
46d65de9 228
57459306 229 return kFALSE;
46d65de9 230
57459306 231 }
232
46d65de9 233
234
235 return fValue == ((const AliIntHolder*) obj)->GetValue();
236
57459306 237}
238
46d65de9 239
240
0bd5d12b 241//______________________________________________________________________
46d65de9 242
0bd5d12b 243TObject* AliSimpleValue::AliUIntHolder::Clone(const char* /*name*/) const {
46d65de9 244
0bd5d12b 245// Clone a value
46d65de9 246
0bd5d12b 247 return new AliUIntHolder(fValue);
46d65de9 248
57459306 249}
250
46d65de9 251
252
0bd5d12b 253//______________________________________________________________________
46d65de9 254
0bd5d12b 255Bool_t AliSimpleValue::AliUIntHolder::IsEqual(const TObject* obj) const {
46d65de9 256
0bd5d12b 257// check whether this is equal to obj
57459306 258
46d65de9 259
260
57459306 261 if (this == obj) {
46d65de9 262
57459306 263 return kTRUE;
46d65de9 264
57459306 265 }
266
46d65de9 267
268
0bd5d12b 269 if (AliUIntHolder::Class() != obj->IsA()) {
46d65de9 270
57459306 271 return kFALSE;
46d65de9 272
57459306 273 }
274
46d65de9 275
276
277 return fValue == ((const AliUIntHolder*) obj)->GetValue();
278
57459306 279}
280
46d65de9 281
282
0bd5d12b 283//______________________________________________________________________
46d65de9 284
0bd5d12b 285TObject* AliSimpleValue::AliFloatHolder::Clone(const char* /*name*/) const {
46d65de9 286
0bd5d12b 287 // Clone a value
46d65de9 288
0bd5d12b 289 return new AliFloatHolder(fValue);
46d65de9 290
57459306 291}
292
46d65de9 293
294
0bd5d12b 295//______________________________________________________________________
46d65de9 296
0bd5d12b 297Bool_t AliSimpleValue::AliFloatHolder::IsEqual(const TObject* obj) const {
46d65de9 298
0bd5d12b 299// check whether this is equal to obj
57459306 300
46d65de9 301
302
57459306 303 if (this == obj) {
46d65de9 304
57459306 305 return kTRUE;
46d65de9 306
57459306 307 }
308
46d65de9 309
310
0bd5d12b 311 if (AliFloatHolder::Class() != obj->IsA()) {
46d65de9 312
57459306 313 return kFALSE;
46d65de9 314
57459306 315 }
316
46d65de9 317
318
319 return fValue == ((const AliFloatHolder*) obj)->GetValue();
320
57459306 321}
322
46d65de9 323
324
0bd5d12b 325//______________________________________________________________________
46d65de9 326
0bd5d12b 327TObject* AliSimpleValue::AliDynBoolHolder::Clone(const char* /*name*/) const {
46d65de9 328
0bd5d12b 329 // Clone a value
46d65de9 330
0bd5d12b 331 return new AliDynBoolHolder(fSize, fValues);
46d65de9 332
57459306 333}
334
46d65de9 335
336
0bd5d12b 337//______________________________________________________________________
46d65de9 338
0bd5d12b 339Bool_t AliSimpleValue::AliDynBoolHolder::IsEqual(const TObject* obj) const {
46d65de9 340
0bd5d12b 341// check whether this is equal to obj
57459306 342
46d65de9 343
344
57459306 345 if (this == obj) {
46d65de9 346
57459306 347 return kTRUE;
46d65de9 348
57459306 349 }
350
46d65de9 351
352
0bd5d12b 353 if (AliDynBoolHolder::Class() != obj->IsA()) {
46d65de9 354
57459306 355 return kFALSE;
46d65de9 356
57459306 357 }
358
46d65de9 359
360
0bd5d12b 361 const AliDynBoolHolder* other = ((const AliDynBoolHolder*) obj);
46d65de9 362
57459306 363
46d65de9 364
365 if (fSize != other->GetSize()) {
366
57459306 367 return kFALSE;
46d65de9 368
57459306 369 }
370
46d65de9 371
372
373 return !memcmp(fValues, other->GetValues(), fSize * sizeof(Bool_t));
374
57459306 375}
376
46d65de9 377
378
0bd5d12b 379//______________________________________________________________________
46d65de9 380
0bd5d12b 381TObject* AliSimpleValue::AliDynByteHolder::Clone(const char* /*name*/) const {
46d65de9 382
0bd5d12b 383// Clone a value
46d65de9 384
0bd5d12b 385 return new AliDynByteHolder(fSize, fValues);
46d65de9 386
57459306 387}
388
46d65de9 389
390
0bd5d12b 391//______________________________________________________________________
46d65de9 392
0bd5d12b 393Bool_t AliSimpleValue::AliDynByteHolder::IsEqual(const TObject* obj) const {
46d65de9 394
0bd5d12b 395// check whether this is equal to obj
57459306 396
46d65de9 397
398
57459306 399 if (this == obj) {
46d65de9 400
57459306 401 return kTRUE;
46d65de9 402
57459306 403 }
404
46d65de9 405
406
0bd5d12b 407 if (AliDynByteHolder::Class() != obj->IsA()) {
46d65de9 408
57459306 409 return kFALSE;
46d65de9 410
57459306 411 }
412
46d65de9 413
414
0bd5d12b 415 const AliDynByteHolder* other = ((const AliDynByteHolder*) obj);
57459306 416
46d65de9 417
418
419 if (fSize != other->GetSize()) {
420
57459306 421 return kFALSE;
46d65de9 422
57459306 423 }
424
46d65de9 425
426
427 return !memcmp(fValues, other->GetValues(), fSize * sizeof(Char_t));
428
57459306 429}
430
46d65de9 431
432
0bd5d12b 433//______________________________________________________________________
46d65de9 434
0bd5d12b 435TObject* AliSimpleValue::AliDynIntHolder::Clone(const char* /*name*/) const {
46d65de9 436
0bd5d12b 437// Clone a value
46d65de9 438
0bd5d12b 439 return new AliDynIntHolder(fSize, fValues);
46d65de9 440
57459306 441}
442
46d65de9 443
444
0bd5d12b 445//______________________________________________________________________
46d65de9 446
0bd5d12b 447Bool_t AliSimpleValue::AliDynIntHolder::IsEqual(const TObject* obj) const {
46d65de9 448
0bd5d12b 449// check whether this is equal to obj
57459306 450
46d65de9 451
452
0bd5d12b 453 if (this == obj) {
46d65de9 454
57459306 455 return kTRUE;
46d65de9 456
57459306 457 }
458
46d65de9 459
460
0bd5d12b 461 if (AliDynIntHolder::Class() != obj->IsA()) {
46d65de9 462
57459306 463 return kFALSE;
46d65de9 464
57459306 465 }
466
46d65de9 467
468
0bd5d12b 469 const AliDynIntHolder* other = ((const AliDynIntHolder*) obj);
57459306 470
46d65de9 471
472
473 if (fSize != other->GetSize()) {
474
57459306 475 return kFALSE;
46d65de9 476
57459306 477 }
478
46d65de9 479
480
481 return !memcmp(fValues, other->GetValues(), fSize * sizeof(Int_t));
482
57459306 483}
484
46d65de9 485
486
0bd5d12b 487//______________________________________________________________________
46d65de9 488
0bd5d12b 489TObject* AliSimpleValue::AliDynUIntHolder::Clone(const char* /*name*/) const {
46d65de9 490
0bd5d12b 491// Clone a value
46d65de9 492
0bd5d12b 493 return new AliDynUIntHolder(fSize, fValues);
46d65de9 494
57459306 495}
496
46d65de9 497
498
0bd5d12b 499//______________________________________________________________________
46d65de9 500
0bd5d12b 501Bool_t AliSimpleValue::AliDynUIntHolder::IsEqual(const TObject* obj) const {
46d65de9 502
0bd5d12b 503// check whether this is equal to obj
57459306 504
46d65de9 505
506
57459306 507 if (this == obj) {
46d65de9 508
57459306 509 return kTRUE;
46d65de9 510
57459306 511 }
512
46d65de9 513
514
0bd5d12b 515 if (AliDynUIntHolder::Class() != obj->IsA()) {
46d65de9 516
57459306 517 return kFALSE;
46d65de9 518
57459306 519 }
520
46d65de9 521
522
0bd5d12b 523 const AliDynUIntHolder* other = ((const AliDynUIntHolder*) obj);
57459306 524
46d65de9 525
526
527 if (fSize != other->GetSize()) {
528
57459306 529 return kFALSE;
46d65de9 530
57459306 531 }
532
46d65de9 533
534
535 return !memcmp(fValues, other->GetValues(), fSize * sizeof(UInt_t));
536
57459306 537}
538
46d65de9 539
540
0bd5d12b 541//______________________________________________________________________
46d65de9 542
0bd5d12b 543TObject* AliSimpleValue::AliDynFloatHolder::Clone(const char* /*name*/) const {
46d65de9 544
0bd5d12b 545 return new AliDynFloatHolder(fSize, fValues);
46d65de9 546
57459306 547}
548
46d65de9 549
550
0bd5d12b 551//______________________________________________________________________
46d65de9 552
0bd5d12b 553Bool_t AliSimpleValue::AliDynFloatHolder::IsEqual(const TObject* obj) const {
46d65de9 554
0bd5d12b 555// check whether this is equal to obj
57459306 556
46d65de9 557
558
57459306 559 if (this == obj) {
46d65de9 560
57459306 561 return kTRUE;
46d65de9 562
57459306 563 }
564
46d65de9 565
566
0bd5d12b 567 if (AliDynFloatHolder::Class() != obj->IsA()) {
46d65de9 568
57459306 569 return kFALSE;
46d65de9 570
57459306 571 }
572
46d65de9 573
574
0bd5d12b 575 const AliDynFloatHolder* other = ((const AliDynFloatHolder*) obj);
57459306 576
46d65de9 577
578
579 if (fSize != other->GetSize()) {
580
57459306 581 return kFALSE;
46d65de9 582
57459306 583 }
584
46d65de9 585
586
587 return !memcmp(fValues, other->GetValues(), fSize * sizeof(Float_t));
588
57459306 589}
590
46d65de9 591
592
0bd5d12b 593//______________________________________________________________________
46d65de9 594
0bd5d12b 595//______________________________________________________________________
596
46d65de9 597
598
57459306 599ClassImp(AliSimpleValue)
600
46d65de9 601
602
0bd5d12b 603//______________________________________________________________________
46d65de9 604
57459306 605AliSimpleValue::AliSimpleValue():
46d65de9 606
57459306 607 fHolder(NULL), fType(kInvalid)
46d65de9 608
57459306 609{
46d65de9 610
0bd5d12b 611// empty constructor
46d65de9 612
57459306 613}
614
46d65de9 615
616
0bd5d12b 617//______________________________________________________________________
46d65de9 618
57459306 619AliSimpleValue::AliSimpleValue(const AliSimpleValue& other):
46d65de9 620
57459306 621 TObject(other), fHolder(NULL), fType(other.fType)
46d65de9 622
57459306 623{
46d65de9 624
0bd5d12b 625// copy contructor
46d65de9 626
57459306 627 if (other.fHolder) {
46d65de9 628
57459306 629 fHolder = other.fHolder->Clone();
46d65de9 630
57459306 631 }
46d65de9 632
57459306 633}
634
46d65de9 635
636
0bd5d12b 637//______________________________________________________________________
46d65de9 638
57459306 639AliSimpleValue::AliSimpleValue(AliSimpleValue::Type type, Int_t size):
46d65de9 640
57459306 641 fHolder(NULL), fType(type)
46d65de9 642
57459306 643{
46d65de9 644
0bd5d12b 645// constructor
46d65de9 646
57459306 647
46d65de9 648
57459306 649 switch (type) {
46d65de9 650
57459306 651 case kBool:
46d65de9 652
0bd5d12b 653 fHolder = new AliBoolHolder();
46d65de9 654
57459306 655 break;
46d65de9 656
57459306 657 case kByte:
46d65de9 658
0bd5d12b 659 fHolder = new AliByteHolder();
46d65de9 660
57459306 661 break;
46d65de9 662
57459306 663 case kInt:
46d65de9 664
0bd5d12b 665 fHolder = new AliIntHolder();
46d65de9 666
57459306 667 break;
46d65de9 668
57459306 669 case kUInt:
46d65de9 670
0bd5d12b 671 fHolder = new AliUIntHolder();
46d65de9 672
57459306 673 break;
46d65de9 674
57459306 675 case kFloat:
46d65de9 676
0bd5d12b 677 fHolder = new AliFloatHolder();
46d65de9 678
57459306 679 break;
46d65de9 680
57459306 681 case kDynBool:
46d65de9 682
0bd5d12b 683 fHolder = new AliDynBoolHolder(size);
46d65de9 684
57459306 685 break;
46d65de9 686
57459306 687 case kDynByte:
46d65de9 688
0bd5d12b 689 fHolder = new AliDynByteHolder(size);
46d65de9 690
57459306 691 break;
46d65de9 692
57459306 693 case kDynInt:
46d65de9 694
0bd5d12b 695 fHolder = new AliDynIntHolder(size);
46d65de9 696
57459306 697 break;
46d65de9 698
57459306 699 case kDynUInt:
46d65de9 700
0bd5d12b 701 fHolder = new AliDynUIntHolder(size);
46d65de9 702
57459306 703 break;
46d65de9 704
57459306 705 case kDynFloat:
46d65de9 706
0bd5d12b 707 fHolder = new AliDynFloatHolder(size);
46d65de9 708
57459306 709 break;
46d65de9 710
57459306 711 default:
46d65de9 712
57459306 713 break;
46d65de9 714
57459306 715 }
46d65de9 716
57459306 717}
718
46d65de9 719
720
0bd5d12b 721//______________________________________________________________________
46d65de9 722
57459306 723AliSimpleValue::AliSimpleValue(Bool_t val) {
46d65de9 724
0bd5d12b 725// contructor
57459306 726
46d65de9 727
728
57459306 729 fType = kBool;
46d65de9 730
0bd5d12b 731 fHolder = new AliBoolHolder(val);
46d65de9 732
57459306 733}
734
46d65de9 735
736
0bd5d12b 737//______________________________________________________________________
46d65de9 738
57459306 739AliSimpleValue::AliSimpleValue(Char_t val) {
46d65de9 740
0bd5d12b 741// contructor
46d65de9 742
57459306 743
46d65de9 744
57459306 745 fType = kByte;
46d65de9 746
0bd5d12b 747 fHolder = new AliByteHolder(val);
46d65de9 748
57459306 749}
750
46d65de9 751
752
0bd5d12b 753//______________________________________________________________________
46d65de9 754
57459306 755AliSimpleValue::AliSimpleValue(Int_t val) {
46d65de9 756
0bd5d12b 757// contructor
46d65de9 758
57459306 759
46d65de9 760
57459306 761 fType = kInt;
46d65de9 762
0bd5d12b 763 fHolder = new AliIntHolder(val);
46d65de9 764
57459306 765}
766
46d65de9 767
768
0bd5d12b 769//______________________________________________________________________
46d65de9 770
57459306 771AliSimpleValue::AliSimpleValue(UInt_t val) {
46d65de9 772
0bd5d12b 773// contructor
46d65de9 774
57459306 775
46d65de9 776
57459306 777 fType = kUInt;
46d65de9 778
0bd5d12b 779 fHolder = new AliUIntHolder(val);
46d65de9 780
57459306 781}
782
46d65de9 783
784
0bd5d12b 785//______________________________________________________________________
46d65de9 786
57459306 787AliSimpleValue::AliSimpleValue(Float_t val) {
46d65de9 788
0bd5d12b 789// contructor
57459306 790
46d65de9 791
792
57459306 793 fType = kFloat;
46d65de9 794
0bd5d12b 795 fHolder = new AliFloatHolder(val);
46d65de9 796
57459306 797}
798
46d65de9 799
800
0bd5d12b 801//______________________________________________________________________
46d65de9 802
57459306 803AliSimpleValue::AliSimpleValue(Int_t size, const Bool_t* buf) {
46d65de9 804
0bd5d12b 805// contructor
46d65de9 806
57459306 807
46d65de9 808
57459306 809 fType = kDynBool;
46d65de9 810
0bd5d12b 811 fHolder = new AliDynBoolHolder(size, buf);
46d65de9 812
57459306 813}
814
46d65de9 815
816
0bd5d12b 817//______________________________________________________________________
46d65de9 818
57459306 819AliSimpleValue::AliSimpleValue(Int_t size, const Char_t* buf) {
46d65de9 820
0bd5d12b 821// contructor
57459306 822
46d65de9 823
824
57459306 825 fType = kDynByte;
46d65de9 826
0bd5d12b 827 fHolder = new AliDynByteHolder(size, buf);
46d65de9 828
57459306 829}
830
46d65de9 831
832
0bd5d12b 833//______________________________________________________________________
46d65de9 834
57459306 835AliSimpleValue::AliSimpleValue(Int_t size, const Int_t* buf) {
46d65de9 836
0bd5d12b 837// contructor
57459306 838
46d65de9 839
840
57459306 841 fType = kDynInt;
46d65de9 842
0bd5d12b 843 fHolder = new AliDynIntHolder(size, buf);
46d65de9 844
57459306 845}
846
46d65de9 847
848
0bd5d12b 849//______________________________________________________________________
46d65de9 850
57459306 851AliSimpleValue::AliSimpleValue(Int_t size, const UInt_t* buf) {
46d65de9 852
0bd5d12b 853// contructor
57459306 854
46d65de9 855
856
57459306 857 fType = kDynUInt;
46d65de9 858
0bd5d12b 859 fHolder = new AliDynUIntHolder(size, buf);
46d65de9 860
57459306 861}
862
46d65de9 863
864
0bd5d12b 865//______________________________________________________________________
46d65de9 866
57459306 867AliSimpleValue::AliSimpleValue(Int_t size, const Float_t* buf) {
46d65de9 868
0bd5d12b 869// contructor
57459306 870
46d65de9 871
872
57459306 873 fType = kDynFloat;
46d65de9 874
0bd5d12b 875 fHolder = new AliDynFloatHolder(size, buf);
46d65de9 876
57459306 877}
878
46d65de9 879
880
0bd5d12b 881//______________________________________________________________________
46d65de9 882
57459306 883AliSimpleValue::~AliSimpleValue() {
46d65de9 884
0bd5d12b 885// destructor
46d65de9 886
57459306 887
46d65de9 888
57459306 889 if (fHolder) {
46d65de9 890
57459306 891 delete fHolder;
46d65de9 892
57459306 893 }
46d65de9 894
57459306 895}
896
46d65de9 897
898
0bd5d12b 899//______________________________________________________________________
46d65de9 900
57459306 901AliSimpleValue& AliSimpleValue::operator=(const AliSimpleValue& other) {
46d65de9 902
0bd5d12b 903// assignment op
904
46d65de9 905
906
57459306 907 if (fHolder) {
46d65de9 908
57459306 909 delete fHolder;
46d65de9 910
57459306 911 }
912
46d65de9 913
914
57459306 915 fType = other.fType;
46d65de9 916
57459306 917
46d65de9 918
57459306 919 if (other.fHolder) {
46d65de9 920
57459306 921 fHolder = other.fHolder->Clone();
46d65de9 922
57459306 923 } else {
46d65de9 924
57459306 925 fHolder = NULL;
46d65de9 926
57459306 927 }
928
46d65de9 929
930
57459306 931 return *this;
46d65de9 932
57459306 933}
934
46d65de9 935
936
0bd5d12b 937//______________________________________________________________________
46d65de9 938
57459306 939Bool_t AliSimpleValue::operator==(const AliSimpleValue& other) const {
46d65de9 940
0bd5d12b 941// equality op
57459306 942
46d65de9 943
944
57459306 945 if (fType != other.fType) {
46d65de9 946
57459306 947 return kFALSE;
46d65de9 948
57459306 949 }
950
46d65de9 951
952
57459306 953 if (!(fHolder && other.fHolder)) {
46d65de9 954
57459306 955 return kFALSE;
46d65de9 956
57459306 957 }
958
46d65de9 959
960
57459306 961 return fHolder->IsEqual(other.fHolder);
46d65de9 962
57459306 963}
964
46d65de9 965
966
0bd5d12b 967//______________________________________________________________________
46d65de9 968
57459306 969void AliSimpleValue::SetBool(Bool_t val) {
46d65de9 970
0bd5d12b 971// set value
57459306 972
46d65de9 973
974
57459306 975 if (!TypeOk(kBool)) {
46d65de9 976
57459306 977 return;
46d65de9 978
57459306 979 }
980
46d65de9 981
982
983 ((AliBoolHolder*) fHolder)->SetValue(val);
984
57459306 985}
986
46d65de9 987
988
0bd5d12b 989//______________________________________________________________________
46d65de9 990
57459306 991void AliSimpleValue::SetByte(Char_t val) {
46d65de9 992
0bd5d12b 993// set value
57459306 994
46d65de9 995
996
57459306 997 if (!TypeOk(kByte)) {
46d65de9 998
57459306 999 return;
46d65de9 1000
57459306 1001 }
1002
46d65de9 1003
1004
1005 ((AliByteHolder*) fHolder)->SetValue(val);
1006
57459306 1007}
1008
46d65de9 1009
1010
0bd5d12b 1011//______________________________________________________________________
46d65de9 1012
57459306 1013void AliSimpleValue::SetInt(Int_t val) {
46d65de9 1014
0bd5d12b 1015// set value
57459306 1016
46d65de9 1017
1018
57459306 1019 if (!TypeOk(kInt)) {
46d65de9 1020
57459306 1021 return;
46d65de9 1022
57459306 1023 }
1024
46d65de9 1025
1026
1027 ((AliIntHolder*) fHolder)->SetValue(val);
1028
57459306 1029}
1030
46d65de9 1031
1032
0bd5d12b 1033//______________________________________________________________________
46d65de9 1034
57459306 1035void AliSimpleValue::SetUInt(UInt_t val) {
46d65de9 1036
0bd5d12b 1037// set value
57459306 1038
46d65de9 1039
1040
57459306 1041 if (!TypeOk(kUInt)) {
46d65de9 1042
57459306 1043 return;
46d65de9 1044
57459306 1045 }
46d65de9 1046
57459306 1047
46d65de9 1048
1049 ((AliUIntHolder*) fHolder)->SetValue(val);
1050
57459306 1051}
1052
46d65de9 1053
1054
0bd5d12b 1055//______________________________________________________________________
46d65de9 1056
57459306 1057void AliSimpleValue::SetFloat(Float_t val) {
46d65de9 1058
0bd5d12b 1059// set value
57459306 1060
46d65de9 1061
1062
57459306 1063 if (!TypeOk(kFloat)) {
46d65de9 1064
57459306 1065 return;
46d65de9 1066
57459306 1067 }
1068
46d65de9 1069
1070
1071 ((AliFloatHolder*) fHolder)->SetValue(val);
1072
57459306 1073}
1074
46d65de9 1075
1076
0bd5d12b 1077//______________________________________________________________________
46d65de9 1078
57459306 1079Bool_t AliSimpleValue::GetBool() const {
46d65de9 1080
0bd5d12b 1081// get value
57459306 1082
46d65de9 1083
1084
57459306 1085 if (!TypeOk(kBool)) {
46d65de9 1086
57459306 1087 return kFALSE;
46d65de9 1088
57459306 1089 }
1090
46d65de9 1091
1092
1093 return ((AliBoolHolder*) fHolder)->GetValue();
1094
57459306 1095}
1096
46d65de9 1097
1098
0bd5d12b 1099//______________________________________________________________________
46d65de9 1100
57459306 1101Char_t AliSimpleValue::GetByte() const {
46d65de9 1102
0bd5d12b 1103// get value
57459306 1104
46d65de9 1105
1106
57459306 1107 if (!TypeOk(kByte)) {
46d65de9 1108
57459306 1109 return 0;
46d65de9 1110
57459306 1111 }
46d65de9 1112
57459306 1113
46d65de9 1114
1115 return ((AliByteHolder*) fHolder)->GetValue();
1116
57459306 1117}
1118
46d65de9 1119
1120
0bd5d12b 1121//______________________________________________________________________
46d65de9 1122
57459306 1123Int_t AliSimpleValue::GetInt() const {
46d65de9 1124
0bd5d12b 1125// get value
57459306 1126
46d65de9 1127
1128
57459306 1129 if (!TypeOk(kInt)) {
46d65de9 1130
57459306 1131 return 0;
46d65de9 1132
57459306 1133 }
46d65de9 1134
1135 return ((AliIntHolder*) fHolder)->GetValue();
1136
57459306 1137}
1138
46d65de9 1139
1140
0bd5d12b 1141//______________________________________________________________________
46d65de9 1142
57459306 1143UInt_t AliSimpleValue::GetUInt() const {
46d65de9 1144
0bd5d12b 1145// get value
57459306 1146
46d65de9 1147
1148
57459306 1149 if (!TypeOk(kUInt)) {
46d65de9 1150
57459306 1151 return 0;
46d65de9 1152
57459306 1153 }
1154
46d65de9 1155
1156
1157 return ((AliUIntHolder*) fHolder)->GetValue();
1158
57459306 1159}
1160
46d65de9 1161
1162
0bd5d12b 1163//______________________________________________________________________
46d65de9 1164
57459306 1165Float_t AliSimpleValue::GetFloat() const {
46d65de9 1166
0bd5d12b 1167// get value
57459306 1168
46d65de9 1169
1170
57459306 1171 if (!TypeOk(kFloat)) {
46d65de9 1172
57459306 1173 return 0;
46d65de9 1174
57459306 1175 }
1176
46d65de9 1177
1178
1179 return ((AliFloatHolder*) fHolder)->GetValue();
1180
57459306 1181}
1182
46d65de9 1183
1184
0bd5d12b 1185//______________________________________________________________________
46d65de9 1186
57459306 1187void AliSimpleValue::SetDynBool(Int_t n, Bool_t val) {
46d65de9 1188
0bd5d12b 1189// set dyn value
46d65de9 1190
57459306 1191
46d65de9 1192
57459306 1193 if (!TypeOk(kDynBool)) {
46d65de9 1194
57459306 1195 return;
46d65de9 1196
57459306 1197 }
1198
46d65de9 1199
1200
57459306 1201 if (!BoundsOk(n)) {
46d65de9 1202
57459306 1203 return;
46d65de9 1204
57459306 1205 }
1206
46d65de9 1207
1208
1209 ((AliDynBoolHolder*) fHolder)->SetValue(n,val);
1210
57459306 1211}
1212
46d65de9 1213
1214
0bd5d12b 1215//______________________________________________________________________
46d65de9 1216
57459306 1217void AliSimpleValue::SetDynByte(Int_t n, Char_t val) {
46d65de9 1218
0bd5d12b 1219// set dyn value
57459306 1220
46d65de9 1221
1222
57459306 1223 if (!TypeOk(kDynByte)) {
46d65de9 1224
57459306 1225 return;
46d65de9 1226
57459306 1227 }
1228
46d65de9 1229
1230
57459306 1231 if (!BoundsOk(n)) {
46d65de9 1232
57459306 1233 return;
46d65de9 1234
57459306 1235 }
1236
46d65de9 1237
1238
1239 ((AliDynByteHolder*) fHolder)->SetValue(n,val);
1240
57459306 1241}
1242
46d65de9 1243
1244
0bd5d12b 1245//______________________________________________________________________
46d65de9 1246
57459306 1247void AliSimpleValue::SetDynInt(Int_t n, Int_t val) {
46d65de9 1248
0bd5d12b 1249// set dyn value
57459306 1250
46d65de9 1251
1252
57459306 1253 if (!TypeOk(kDynInt)) {
46d65de9 1254
57459306 1255 return;
46d65de9 1256
57459306 1257 }
1258
46d65de9 1259
1260
57459306 1261 if (!BoundsOk(n)) {
46d65de9 1262
57459306 1263 return;
46d65de9 1264
57459306 1265 }
1266
46d65de9 1267
1268
1269 ((AliDynIntHolder*) fHolder)->SetValue(n,val);
1270
57459306 1271}
1272
46d65de9 1273
1274
0bd5d12b 1275//______________________________________________________________________
46d65de9 1276
57459306 1277void AliSimpleValue::SetDynUInt(Int_t n, UInt_t val) {
46d65de9 1278
0bd5d12b 1279// set dyn value
57459306 1280
46d65de9 1281
1282
57459306 1283 if (!TypeOk(kDynUInt)) {
46d65de9 1284
57459306 1285 return;
46d65de9 1286
57459306 1287 }
1288
46d65de9 1289
1290
57459306 1291 if (!BoundsOk(n)) {
46d65de9 1292
57459306 1293 return;
46d65de9 1294
57459306 1295 }
1296
46d65de9 1297
1298
1299 ((AliDynUIntHolder*) fHolder)->SetValue(n,val);
1300
57459306 1301}
1302
46d65de9 1303
1304
0bd5d12b 1305//______________________________________________________________________
46d65de9 1306
57459306 1307void AliSimpleValue::SetDynFloat(Int_t n, Float_t val) {
46d65de9 1308
0bd5d12b 1309// set dyn value
57459306 1310
46d65de9 1311
1312
57459306 1313 if (!TypeOk(kDynFloat)) {
46d65de9 1314
57459306 1315 return;
46d65de9 1316
57459306 1317 }
1318
46d65de9 1319
1320
57459306 1321 if (!BoundsOk(n)) {
46d65de9 1322
57459306 1323 return;
46d65de9 1324
57459306 1325 }
1326
46d65de9 1327
1328
1329 ((AliDynFloatHolder*) fHolder)->SetValue(n,val);
1330
57459306 1331}
1332
46d65de9 1333
1334
0bd5d12b 1335//______________________________________________________________________
46d65de9 1336
57459306 1337Bool_t AliSimpleValue::GetDynBool(Int_t n) const {
46d65de9 1338
0bd5d12b 1339// get dyn value
57459306 1340
46d65de9 1341
1342
57459306 1343 if (!TypeOk(kDynBool)) {
46d65de9 1344
57459306 1345 return kFALSE;
46d65de9 1346
57459306 1347 }
1348
46d65de9 1349
1350
57459306 1351 if (!BoundsOk(n)) {
46d65de9 1352
57459306 1353 return kFALSE;
46d65de9 1354
57459306 1355 }
1356
46d65de9 1357
1358
1359 return ((AliDynBoolHolder*) fHolder)->GetValue(n);
1360
57459306 1361}
1362
46d65de9 1363
1364
0bd5d12b 1365//______________________________________________________________________
46d65de9 1366
57459306 1367Char_t AliSimpleValue::GetDynByte(Int_t n) const {
46d65de9 1368
0bd5d12b 1369// get dyn value
57459306 1370
46d65de9 1371
1372
57459306 1373 if (!TypeOk(kDynByte)) {
46d65de9 1374
57459306 1375 return 0;
46d65de9 1376
57459306 1377 }
1378
46d65de9 1379
1380
57459306 1381 if (!BoundsOk(n)) {
46d65de9 1382
57459306 1383 return 0;
46d65de9 1384
57459306 1385 }
1386
46d65de9 1387
1388
1389 return ((AliDynByteHolder*) fHolder)->GetValue(n);
1390
57459306 1391}
1392
46d65de9 1393
1394
0bd5d12b 1395//______________________________________________________________________
46d65de9 1396
57459306 1397Int_t AliSimpleValue::GetDynInt(Int_t n) const {
46d65de9 1398
0bd5d12b 1399// get dyn value
57459306 1400
46d65de9 1401
1402
57459306 1403 if (!TypeOk(kDynInt)) {
46d65de9 1404
57459306 1405 return 0;
46d65de9 1406
57459306 1407 }
1408
46d65de9 1409
1410
57459306 1411 if (!BoundsOk(n)) {
46d65de9 1412
57459306 1413 return 0;
46d65de9 1414
57459306 1415 }
1416
46d65de9 1417
1418
1419 return ((AliDynIntHolder*) fHolder)->GetValue(n);
1420
57459306 1421}
1422
46d65de9 1423
1424
0bd5d12b 1425//______________________________________________________________________
46d65de9 1426
57459306 1427UInt_t AliSimpleValue::GetDynUInt(Int_t n) const {
46d65de9 1428
0bd5d12b 1429// get dyn value
57459306 1430
46d65de9 1431
1432
57459306 1433 if (!TypeOk(kDynUInt)) {
46d65de9 1434
57459306 1435 return 0;
46d65de9 1436
57459306 1437 }
1438
46d65de9 1439
1440
57459306 1441 if (!BoundsOk(n)) {
46d65de9 1442
57459306 1443 return 0;
46d65de9 1444
57459306 1445 }
1446
46d65de9 1447
1448
1449 return ((AliDynUIntHolder*) fHolder)->GetValue(n);
1450
57459306 1451}
1452
46d65de9 1453
1454
0bd5d12b 1455//______________________________________________________________________
46d65de9 1456
57459306 1457Float_t AliSimpleValue::GetDynFloat(Int_t n) const {
46d65de9 1458
0bd5d12b 1459// get dyn value
57459306 1460
46d65de9 1461
1462
57459306 1463 if (!TypeOk(kDynFloat)) {
46d65de9 1464
57459306 1465 return 0;
46d65de9 1466
57459306 1467 }
1468
46d65de9 1469
1470
57459306 1471 if (!BoundsOk(n)) {
46d65de9 1472
57459306 1473 return 0;
46d65de9 1474
57459306 1475 }
1476
46d65de9 1477
1478
1479 return ((AliDynFloatHolder*) fHolder)->GetValue(n);
1480
57459306 1481}
1482
46d65de9 1483
1484
0bd5d12b 1485//______________________________________________________________________
46d65de9 1486
57459306 1487Bool_t AliSimpleValue::TypeOk(AliSimpleValue::Type type) const {
46d65de9 1488
0bd5d12b 1489// check that AliSimpleValue is of type type
57459306 1490
46d65de9 1491
1492
57459306 1493 if (fType != type) {
46d65de9 1494
57459306 1495 AliError(Form("SimpleValue type is not %s!",
46d65de9 1496
57459306 1497 GetTypeString(type)));
46d65de9 1498
57459306 1499 return kFALSE;
46d65de9 1500
57459306 1501 }
1502
46d65de9 1503
1504
57459306 1505 return kTRUE;
46d65de9 1506
57459306 1507}
1508
46d65de9 1509
1510
0bd5d12b 1511//______________________________________________________________________
46d65de9 1512
57459306 1513Bool_t AliSimpleValue::BoundsOk(Int_t n) const {
46d65de9 1514
0bd5d12b 1515// Check that n is within bounds of dyn value
57459306 1516
46d65de9 1517
1518
57459306 1519 switch (fType) {
46d65de9 1520
57459306 1521 case kDynBool:
46d65de9 1522
57459306 1523 case kDynByte:
46d65de9 1524
57459306 1525 case kDynInt:
46d65de9 1526
57459306 1527 case kDynUInt:
46d65de9 1528
57459306 1529 case kDynFloat: {
46d65de9 1530
1531 Int_t size = ((AliDynHolder*) fHolder)->GetSize();
1532
57459306 1533 if (n < 0 || n >= size) {
46d65de9 1534
57459306 1535 AliError(Form("Index %d out of bounds!", n));
46d65de9 1536
57459306 1537 return kFALSE;
46d65de9 1538
57459306 1539 }
46d65de9 1540
57459306 1541 return kTRUE;
46d65de9 1542
57459306 1543 }
46d65de9 1544
57459306 1545 case kBool:
46d65de9 1546
57459306 1547 case kByte:
46d65de9 1548
57459306 1549 case kInt:
46d65de9 1550
57459306 1551 case kUInt:
46d65de9 1552
57459306 1553 case kFloat:
46d65de9 1554
57459306 1555 AliError(Form("SimpleValue type %s is not dynamic!",
46d65de9 1556
57459306 1557 GetTypeString(fType)));
46d65de9 1558
57459306 1559 return kFALSE;
46d65de9 1560
57459306 1561 default:
46d65de9 1562
57459306 1563 AliError("Invalid or unknown type!");
46d65de9 1564
57459306 1565 return kFALSE;
46d65de9 1566
57459306 1567 }
46d65de9 1568
57459306 1569}
1570
46d65de9 1571
1572
0bd5d12b 1573//______________________________________________________________________
46d65de9 1574
57459306 1575Int_t AliSimpleValue::GetDynamicSize() const {
46d65de9 1576
57459306 1577 //
46d65de9 1578
57459306 1579 // returns the size of dynamic type or 0 in case of
46d65de9 1580
57459306 1581 // none dynamic type.
46d65de9 1582
57459306 1583 //
1584
46d65de9 1585
1586
57459306 1587 if (!fHolder) {
46d65de9 1588
57459306 1589 return 0;
46d65de9 1590
57459306 1591 }
1592
46d65de9 1593
1594
0bd5d12b 1595 if (!fHolder->IsA()->InheritsFrom(AliDynHolder::Class())) {
46d65de9 1596
57459306 1597 return 0;
46d65de9 1598
57459306 1599 }
1600
46d65de9 1601
1602
1603 return ((AliDynHolder*) fHolder)->GetSize();
1604
57459306 1605}
1606
46d65de9 1607
1608
0bd5d12b 1609//______________________________________________________________________
46d65de9 1610
57459306 1611TString AliSimpleValue::ToString() const {
46d65de9 1612
0bd5d12b 1613// Print value
46d65de9 1614
57459306 1615
46d65de9 1616
57459306 1617 TString result;
46d65de9 1618
57459306 1619
46d65de9 1620
57459306 1621 result += "Type: ";
46d65de9 1622
57459306 1623 result += GetTypeString(fType);
46d65de9 1624
57459306 1625
46d65de9 1626
57459306 1627 result += ", Value: ";
46d65de9 1628
57459306 1629 switch (fType) {
46d65de9 1630
57459306 1631 case kBool:
46d65de9 1632
57459306 1633 result += GetBool();
46d65de9 1634
57459306 1635 break;
46d65de9 1636
57459306 1637 case kByte:
46d65de9 1638
1639 result += GetByte();
1640
57459306 1641 break;
46d65de9 1642
57459306 1643 case kInt:
46d65de9 1644
57459306 1645 result += GetInt();
46d65de9 1646
57459306 1647 break;
46d65de9 1648
57459306 1649 case kUInt:
46d65de9 1650
57459306 1651 result += GetUInt();
46d65de9 1652
57459306 1653 break;
46d65de9 1654
57459306 1655 case kFloat:
46d65de9 1656
57459306 1657 result += GetFloat();
46d65de9 1658
57459306 1659 break;
46d65de9 1660
57459306 1661 case kDynBool: {
46d65de9 1662
57459306 1663 result += "[";
46d65de9 1664
57459306 1665 Int_t size = GetDynamicSize();
46d65de9 1666
57459306 1667 for (Int_t k = 0; k < size; k ++) {
46d65de9 1668
57459306 1669 result += GetDynBool(k);
46d65de9 1670
57459306 1671 if (k + 1 < size) {
46d65de9 1672
57459306 1673 result += ", ";
46d65de9 1674
57459306 1675 }
46d65de9 1676
57459306 1677 }
46d65de9 1678
57459306 1679 result += "]";
46d65de9 1680
57459306 1681 }
46d65de9 1682
57459306 1683 break;
46d65de9 1684
57459306 1685 case kDynByte: {
46d65de9 1686
57459306 1687 result += "[";
46d65de9 1688
57459306 1689 Int_t size = GetDynamicSize();
46d65de9 1690
57459306 1691 for (Int_t k = 0; k < size; k ++) {
46d65de9 1692
57459306 1693 result += GetDynByte(k);
46d65de9 1694
57459306 1695 if (k + 1 < size) {
46d65de9 1696
57459306 1697 result += ", ";
46d65de9 1698
57459306 1699 }
46d65de9 1700
57459306 1701 }
46d65de9 1702
57459306 1703 result += "]";
46d65de9 1704
57459306 1705 }
46d65de9 1706
57459306 1707 break;
46d65de9 1708
57459306 1709 case kDynInt: {
46d65de9 1710
57459306 1711 result += "[";
46d65de9 1712
57459306 1713 Int_t size = GetDynamicSize();
46d65de9 1714
57459306 1715 for (Int_t k = 0; k < size; k ++) {
46d65de9 1716
57459306 1717 result += GetDynInt(k);
46d65de9 1718
57459306 1719 if (k + 1 < size) {
46d65de9 1720
57459306 1721 result += ", ";
46d65de9 1722
57459306 1723 }
46d65de9 1724
57459306 1725 }
46d65de9 1726
57459306 1727 result += "]";
46d65de9 1728
57459306 1729 }
46d65de9 1730
57459306 1731 break;
46d65de9 1732
57459306 1733 case kDynUInt: {
46d65de9 1734
57459306 1735 result += "[";
46d65de9 1736
57459306 1737 Int_t size = GetDynamicSize();
46d65de9 1738
57459306 1739 for (Int_t k = 0; k < size; k ++) {
46d65de9 1740
57459306 1741 result += GetDynUInt(k);
46d65de9 1742
57459306 1743 if (k + 1 < size) {
46d65de9 1744
57459306 1745 result += ", ";
46d65de9 1746
57459306 1747 }
46d65de9 1748
57459306 1749 }
46d65de9 1750
57459306 1751 result += "]";
46d65de9 1752
57459306 1753 }
46d65de9 1754
57459306 1755 break;
46d65de9 1756
57459306 1757 case kDynFloat: {
46d65de9 1758
57459306 1759 result += "[";
46d65de9 1760
57459306 1761 Int_t size = GetDynamicSize();
46d65de9 1762
57459306 1763 for (Int_t k = 0; k < size; k ++) {
46d65de9 1764
57459306 1765 result += GetDynFloat(k);
46d65de9 1766
57459306 1767 if (k + 1 < size) {
46d65de9 1768
57459306 1769 result += ", ";
46d65de9 1770
57459306 1771 }
46d65de9 1772
57459306 1773 }
46d65de9 1774
57459306 1775 result += "]";
46d65de9 1776
57459306 1777 }
46d65de9 1778
57459306 1779 break;
46d65de9 1780
57459306 1781 default:
46d65de9 1782
57459306 1783 result += "Unknown";
46d65de9 1784
57459306 1785 }
1786
46d65de9 1787
1788
57459306 1789 return result;
46d65de9 1790
57459306 1791}
1792
46d65de9 1793
1794
0bd5d12b 1795//______________________________________________________________________
46d65de9 1796
57459306 1797Bool_t AliSimpleValue::IsDynamic(AliSimpleValue::Type type) {
46d65de9 1798
0bd5d12b 1799// check that type is dynamic
57459306 1800
46d65de9 1801
1802
57459306 1803 switch (type) {
46d65de9 1804
57459306 1805 case kDynBool:
46d65de9 1806
57459306 1807 case kDynByte:
46d65de9 1808
57459306 1809 case kDynInt:
46d65de9 1810
57459306 1811 case kDynUInt:
46d65de9 1812
57459306 1813 case kDynFloat:
46d65de9 1814
57459306 1815 return kTRUE;
46d65de9 1816
57459306 1817 default:
46d65de9 1818
57459306 1819 return kFALSE;
46d65de9 1820
57459306 1821 }
46d65de9 1822
57459306 1823}
1824
46d65de9 1825
1826
0bd5d12b 1827//______________________________________________________________________
46d65de9 1828
57459306 1829Int_t AliSimpleValue::GetSize() const {
46d65de9 1830
57459306 1831 //
46d65de9 1832
57459306 1833 // return the number of bytes used by this value.
46d65de9 1834
57459306 1835 // In case of dynamic type it returns dynamic size multiplied
46d65de9 1836
57459306 1837 // by the size of corresponding primitive type.
46d65de9 1838
57459306 1839 //
46d65de9 1840
57459306 1841
46d65de9 1842
57459306 1843 return IsDynamic(fType) ?
46d65de9 1844
57459306 1845 GetDynamicSize() * AliSimpleValue::GetPrimitiveSize(fType):
46d65de9 1846
57459306 1847 AliSimpleValue::GetPrimitiveSize(fType);
46d65de9 1848
57459306 1849}
1850
46d65de9 1851
1852
0bd5d12b 1853//______________________________________________________________________
46d65de9 1854
57459306 1855Int_t AliSimpleValue::GetPrimitiveSize(AliSimpleValue::Type type) {
46d65de9 1856
57459306 1857 //
46d65de9 1858
57459306 1859 // returns the number of bytes used by particular primitive type
46d65de9 1860
57459306 1861 // or by the corresponding primitive type in case of dynamic type.
46d65de9 1862
57459306 1863 //
1864
1865
46d65de9 1866
1867
1868
57459306 1869 switch (type) {
1870
46d65de9 1871
1872
57459306 1873 case kBool:
46d65de9 1874
57459306 1875 case kDynBool: return sizeof(Bool_t);
46d65de9 1876
57459306 1877 case kByte:
46d65de9 1878
57459306 1879 case kDynByte: return sizeof(Char_t);
46d65de9 1880
57459306 1881 case kInt:
46d65de9 1882
57459306 1883 case kDynInt: return sizeof(Int_t);
46d65de9 1884
57459306 1885 case kUInt:
46d65de9 1886
57459306 1887 case kDynUInt: return sizeof(UInt_t);
46d65de9 1888
57459306 1889 case kFloat:
46d65de9 1890
57459306 1891 case kDynFloat: return sizeof(Float_t);
46d65de9 1892
57459306 1893 default:
46d65de9 1894
57459306 1895 return 0;
46d65de9 1896
57459306 1897 }
46d65de9 1898
57459306 1899}
1900
46d65de9 1901
1902
0bd5d12b 1903//______________________________________________________________________
46d65de9 1904
57459306 1905const char* AliSimpleValue::GetTypeString(AliSimpleValue::Type type) {
46d65de9 1906
0bd5d12b 1907// return type name correspondyng to type
57459306 1908
46d65de9 1909
1910
57459306 1911 switch (type) {
46d65de9 1912
57459306 1913 case kBool: return "Bool";
46d65de9 1914
57459306 1915 case kByte: return "Byte";
46d65de9 1916
57459306 1917 case kInt: return "Int";
46d65de9 1918
57459306 1919 case kUInt: return "UInt";
46d65de9 1920
57459306 1921 case kFloat: return "Float";
46d65de9 1922
57459306 1923 case kDynBool: return "DynBool";
46d65de9 1924
57459306 1925 case kDynByte: return "DynByte";
46d65de9 1926
57459306 1927 case kDynInt: return "DynInt";
46d65de9 1928
57459306 1929 case kDynUInt: return "DynUInt";
46d65de9 1930
57459306 1931 case kDynFloat: return "DynFloat";
46d65de9 1932
57459306 1933 default:
46d65de9 1934
57459306 1935 return "Unknown";
46d65de9 1936
57459306 1937 }
46d65de9 1938
57459306 1939}
46d65de9 1940