consolidate zero-length arrays (aka struct hack)
[u/mrichter/AliRoot.git] / RAW / AliRawDataArrayV2.cxx
1 // Author: Cvetan Cheshkov 27/03/2007
2
3 /**************************************************************************
4  * Copyright(c) 1998-2003, ALICE Experiment at CERN, All rights reserved. *
5  *                                                                        *
6  * Author: The ALICE Off-line Project.                                    *
7  * Contributors are mentioned in the code where appropriate.              *
8  *                                                                        *
9  * Permission to use, copy, modify and distribute this software and its   *
10  * documentation strictly for non-commercial purposes is hereby granted   *
11  * without fee, provided that the above copyright notice appears in all   *
12  * copies and that both the copyright notice and this permission notice   *
13  * appear in the supporting documentation. The authors make no claims     *
14  * about the suitability of this software for any purpose. It is          *
15  * provided "as is" without express or implied warranty.                  *
16  **************************************************************************/
17
18 //////////////////////////////////////////////////////////////////////////
19 //                                                                      //
20 // AliRawDataArrayV2                                                    //
21 // A container object which is used in order to write the sub-detector  //
22 // raw-data payloads into a separate branches                           //
23 //                                                                      //
24 //////////////////////////////////////////////////////////////////////////
25
26 #include "AliRawDataArrayV2.h"
27 #include "AliRawData.h"
28
29
30 ClassImp(AliRawDataArrayV2)
31
32 AliRawDataArrayV2::AliRawDataArrayV2():
33 fRawDataArray("AliRawData",100),
34 fNAlloc(0)
35 {
36   // Default constructor
37 }
38
39 AliRawDataArrayV2::AliRawDataArrayV2(Int_t n):
40 fRawDataArray("AliRawData",n),
41 fNAlloc(0)
42 {
43   // Default constructor
44 }
45
46 AliRawDataArrayV2::~AliRawDataArrayV2()
47 {
48   fRawDataArray.Delete();
49 }
50
51 void AliRawDataArrayV2::ClearData()
52 {
53   fRawDataArray.Clear();
54 }
55
56 AliRawData *AliRawDataArrayV2::Add()
57 {
58   Int_t nEntries = fRawDataArray.GetEntriesFast();
59   if (nEntries < fNAlloc) {
60     return (AliRawData *)fRawDataArray[nEntries];
61   }
62   else {
63     fNAlloc = nEntries + 1;
64     return new (fRawDataArray[nEntries]) AliRawData();
65   }
66 }