1
1
// @(#)root/base:$Id$
2
2
// Author: Victor Perev 08/05/02
3
3
4
+ #include < cstdio>
5
+ #include < cstdlib>
6
+ #include < cassert>
4
7
5
- #include < stdio.h>
6
- #include < stdlib.h>
7
- #include < assert.h>
8
8
#include " TOffset.h"
9
9
#include " TObject.h"
10
10
#include " TList.h"
22
22
#include < deque>
23
23
#include < map>
24
24
#include < set>
25
+
25
26
// using namespace std ;
26
27
using std::vector;
27
28
using std::list;
@@ -31,29 +32,19 @@ using std::multimap;
31
32
using std::set;
32
33
using std::multiset;
33
34
34
-
35
- // static members init
36
- #ifndef __CINT__
37
- Int_t TOffset::fgAlign[16 ] = {0 };
38
-
39
-
40
- Int_t TOffset::fgSize[16 ] = {0 };
41
- #else
42
- Int_t TOffset::fgAlign[16 ] ;
43
-
44
-
45
- Int_t TOffset::fgSize[16 ] ;
46
- #endif
47
- Int_t TOffset::fgWhereVirt = -1 ;
48
- Int_t TOffset::fgSolBug = 0 ;
49
35
36
+ // static members init
37
+ Int_t TOffset::fgAlign[16 ] = {0 };
38
+ Int_t TOffset::fgSize[16 ] = {0 };
39
+ Int_t TOffset::fgWhereVirt = -1 ;
40
+ Int_t TOffset::fgSolBug = 0 ;
50
41
51
42
// ______________________________________________________________________________
52
43
TOffset::TOffset (TClass *cl,Int_t all)
53
44
{
54
45
fOffsetList = new TList;
55
46
fClass = cl;
56
- fOffset = fTail = fNBase = fSize = fUsed = fLastMult = 0 ;
47
+ fOffset = fTail = fNBase = fSize = fUsed = fLastMult = 0 ;
57
48
Init ();
58
49
Virt ();
59
50
Adopt (all);
@@ -63,7 +54,8 @@ Int_t TOffset::fgSolBug = 0;
63
54
TOffset::~TOffset ()
64
55
{
65
56
fOffsetList ->Delete ();
66
- delete fOffsetList ; fOffsetList =0 ;
57
+ delete fOffsetList ;
58
+ fOffsetList = nullptr ;
67
59
}
68
60
// ______________________________________________________________________________
69
61
const char *TOffset::GetName () const
@@ -131,10 +123,10 @@ const char *TOffset::GetName() const
131
123
{fgSize[kSizeVirt ] = sizeof (TestVirt2);
132
124
TestVirt3 t; fgAlign[kAlignVirt ] = (char *)((TestVirt2*)&t)-&t.c1 ;}
133
125
{TestVirt4 t; fgWhereVirt = ((char *)&t == &t.c );}
134
-
126
+
135
127
// Test Solaris bug
136
128
{ sol4Class t; fgSolBug = ((t.i4 -(char *)&t) < (int ) sizeof (sol3Class));}
137
-
129
+
138
130
139
131
140
132
printf (" AlignChar %d size %d\n " ,fgAlign[kAlignChar ] ,fgSize[kSizeChar ] );
@@ -179,17 +171,17 @@ const char *TOffset::GetName() const
179
171
}
180
172
fVirt = 0 ;
181
173
fMult = fgAlign[kAlignChar ];
182
- }
174
+ }
183
175
184
176
// ______________________________________________________________________________
185
177
void TOffset::Adopt (Int_t all)
186
178
{
187
179
// Adopt info from bases
188
180
189
181
TList *lb = fClass ->GetListOfBases ();
190
- if (!lb) return ;
182
+ if (!lb) return ;
191
183
TListIter nextBase (lb);
192
- TClass *bc=0 ;
184
+ TClass *bc=0 ;
193
185
TBaseClass *bcl=0 ;
194
186
while ((bcl = (TBaseClass*)nextBase ())) {// list of base
195
187
bc = bcl->GetClassPointer ();
@@ -211,10 +203,10 @@ const char *TOffset::GetName() const
211
203
}// end of base offset list
212
204
fOffset += basOff.GetUsed ();
213
205
}// end list of base
214
-
206
+
215
207
return ;
216
-
217
- }
208
+
209
+ }
218
210
// ______________________________________________________________________________
219
211
void TOffset::DoIt ()
220
212
{
@@ -232,7 +224,7 @@ const char *TOffset::GetName() const
232
224
TDataType *dt = dm->GetDataType ();
233
225
FullTypeName = dm->GetFullTypeName ();
234
226
tit = fClass ->GetName (); tit +=" :: type=" ;
235
- tit += FullTypeName;
227
+ tit += FullTypeName;
236
228
TypeName = dm->GetTypeName ();
237
229
if (dt) {
238
230
p|=dt->Property ();
@@ -246,10 +238,10 @@ const char *TOffset::GetName() const
246
238
for (int dim = 0 ; dim < dm->GetArrayDim (); dim++)
247
239
{ units *= dm->GetMaxIndex (dim);}
248
240
tit += " units=" ; tit+=units;
249
-
241
+
250
242
kind = -1 ;
251
243
252
- if (p&kIsPointer )
244
+ if (p&kIsPointer )
253
245
{ kind = kAlignPoint ;}
254
246
255
247
else if (p&kIsEnum )
@@ -264,10 +256,10 @@ const char *TOffset::GetName() const
264
256
const char *ctype = strstr (ctypes,ty.Data ());
265
257
assert (ctype);
266
258
kind = (ctype-ctypes)/7 ;
267
-
259
+
268
260
}
269
261
else if (dm->IsSTLContainer ())
270
- {
262
+ {
271
263
kind = kAlignVector + dm->IsSTLContainer () - 1 ;
272
264
}
273
265
@@ -283,7 +275,7 @@ const char *TOffset::GetName() const
283
275
fOffset += size*units;
284
276
continue ;
285
277
}
286
-
278
+
287
279
cl = gROOT ->GetClass (TypeName.Data ());
288
280
if (p&kIsClass || cl) {
289
281
@@ -300,9 +292,6 @@ const char *TOffset::GetName() const
300
292
fOffsetList ->AddLast (tnoff);
301
293
fOffset += (offClass.GetSize ())*units;
302
294
303
-
304
-
305
-
306
295
continue ;
307
296
}
308
297
@@ -332,7 +321,7 @@ const char *TOffset::GetName() const
332
321
printf (" TOffset: Class %s" ,fClass ->GetName ());
333
322
printf (" size = %d virt = %d align = %d" ,fSize ,fVirt ,fMult );
334
323
printf (" Tail = %d \n " ,fTail );
335
- int num = 0 ;
324
+ int num = 0 ;
336
325
TListIter next (fOffsetList );
337
326
TNamed *tn;
338
327
while ((tn=(TNamed*)next ())) {
@@ -354,27 +343,23 @@ Int_t TOffset::GetOffset(const char *name) const
354
343
355
344
class myProf :public TH1F {
356
345
public:
357
- virtual ~myProf (){}
358
- TArrayD fArr ;
359
- ClassDef (myProf, 1 )
346
+ ~myProf () override {}
347
+ TArrayD fArr ;
348
+ ClassDefOverride (myProf, 1 )
360
349
};
361
350
class myPro2 {
362
-
363
351
public:
364
- TH1F fH1 ;
365
- TArrayD fArr ;
352
+ TH1F fH1 ;
353
+ TArrayD fArr ;
366
354
};
367
355
class myPro3 :public TH1F {
368
356
public:
369
-
370
- virtual ~myPro3 (){}
371
- char fArr ;
372
- ClassDef (myPro3, 1 )
357
+ ~myPro3 () override {}
358
+ char fArr ;
359
+ ClassDefOverride (myPro3, 1 )
373
360
};
374
361
375
362
376
-
377
-
378
363
// Tail
379
364
class fstClass {public:virtual ~fstClass (){};char c0;double d[73 ]; char c1;};
380
365
class tailClass {public: fstClass f; char c2;};
@@ -392,10 +377,8 @@ class fst3Class : public fst1Class,fst2Class {public:virtual ~fst3Class(){};};
392
377
393
378
class tailPClass : public fst3Class {public: char c2;};
394
379
395
-
396
-
397
380
// ______________________________________________________________________________
398
- void TOffset::Test ()
381
+ void TOffset::Test ()
399
382
{
400
383
401
384
myProf my;
@@ -410,28 +393,35 @@ void TOffset::Test()
410
393
printf (" size TH1D,TArrayD,my=%zu,%zu,%zu offset=%td\n " ,
411
394
sizeof (TH1F),sizeof (TArrayD),sizeof (my3),(char *)&my3.fArr -(char *)&my3);
412
395
413
- // Tail
414
- { tailClass t; printf (" Tail1: first size=%zu c012offset=%td %td %td,TailSize=%zu\n "
415
- ,sizeof (fstClass),&t.f .c0 -(char *)&t, &t.f .c1 -(char *)&t,&t.c2 -(char *)&t,sizeof (t));
416
- }
417
- // Tail2
418
- { tail2Class t; printf (" Tail2: first size=%zu c0121offset=%td %td %td,TailSize=%zu\n "
419
- ,sizeof (fstClass),&t.c0 -(char *)&t, &t.c1 -(char *)&t, &t.c2 -(char *)&t, sizeof (t));
420
- }
421
- // Tail3
422
- { tail3Class t; printf (" Tail3: first size=%zu c012offset=%td %td %td,TailSize=%zu\n "
423
- ,sizeof (fstClass),&t.c0 -(char *)&t, &t.c1 -(char *)&t, (char *)&t.c2 -(char *)&t, sizeof (t));
424
- }
425
- // Tail4
426
- { tail2Class t; printf (" Tail2: first size=%zu c0121offset=%td %td %td,TailSize=%zu\n "
427
- ,sizeof (fstClass),&t.c0 -(char *)&t, &t.c1 -(char *)&t, &t.c2 -(char *)&t, sizeof (t));
428
- }
429
- // TailP
430
- { tailPClass t; printf (" TailP: first size=%zu offset=%td TailSize=%zu\n "
431
- ,sizeof (fst3Class),(char *)&t.c2 -(char *)&t, sizeof (t));
432
- }
433
-
396
+ // Tail
397
+ {
398
+ tailClass t;
399
+ printf (" Tail1: first size=%zu c012offset=%td %td %td,TailSize=%zu\n "
400
+ ,sizeof (fstClass),&t.f .c0 -(char *)&t, &t.f .c1 -(char *)&t,&t.c2 -(char *)&t,sizeof (t));
401
+ }
402
+ // Tail2
403
+ {
404
+ tail2Class t;
405
+ printf (" Tail2: first size=%zu c0121offset=%td %td %td,TailSize=%zu\n "
406
+ ,sizeof (fstClass),&t.c0 -(char *)&t, &t.c1 -(char *)&t, &t.c2 -(char *)&t, sizeof (t));
407
+ }
408
+ // Tail3
409
+ {
410
+ tail3Class t;
411
+ printf (" Tail3: first size=%zu c012offset=%td %td %td,TailSize=%zu\n "
412
+ ,sizeof (fstClass),&t.c0 -(char *)&t, &t.c1 -(char *)&t, (char *)&t.c2 -(char *)&t, sizeof (t));
413
+ }
414
+ // Tail4
415
+ {
416
+ tail2Class t;
417
+ printf (" Tail2: first size=%zu c0121offset=%td %td %td,TailSize=%zu\n "
418
+ ,sizeof (fstClass),&t.c0 -(char *)&t, &t.c1 -(char *)&t, &t.c2 -(char *)&t, sizeof (t));
419
+ }
420
+ // TailP
421
+ {
422
+ tailPClass t;
423
+ printf (" TailP: first size=%zu offset=%td TailSize=%zu\n "
424
+ ,sizeof (fst3Class),(char *)&t.c2 -(char *)&t, sizeof (t));
425
+ }
434
426
435
427
}
436
-
437
-
0 commit comments