]> git.uio.no Git - u/mrichter/AliRoot.git/blame - CONTAINERS/AliCTypes.h
Corrections to obey the coding conventions
[u/mrichter/AliRoot.git] / CONTAINERS / AliCTypes.h
CommitLineData
6fa1c374 1#ifndef ALI_CTypes
2#define ALI_CTypes
3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
6/* $Id$ */
7
8//////////////////////////////////////////////////////////////////////////
9// //
10// Ali C types //
11//
12// MI //
13// Macros for defining Containers //
14// //
15//////////////////////////////////////////////////////////////////////////
16#include "TMemberInspector.h"
17#include "TClass.h"
18#include "TStorage.h"
19
20class TDumpMembers : public TMemberInspector {
21public:
22 TDumpMembers() { }
0a24c9eb 23 void Inspect(TClass *cl, const char *parent, const char *name, const void *addr);
6fa1c374 24};
25
26//////////////////////////////////////////////////////////////////////////
27
28
29
0f917871 30// Removed:
31// friend operator>>
32// _ClassInit_
6fa1c374 33#define LClassDef(name,id) \
34private: \
35 static TClass *fgIsA; \
36public: \
37 static TClass *Class(); \
38 static const char *Class_Name(); \
39 static Version_t Class_Version() { return id; } \
40 static void Dictionary(); \
41 TClass *IsA() const { return name::Class(); } \
42 void ShowMembers(TMemberInspector &insp, char *parent); \
43 void Streamer(TBuffer &b); \
6fa1c374 44 static const char *DeclFileName() { return __FILE__; } \
45 static int DeclFileLine() { return __LINE__; } \
46 static const char *ImplFileName(); \
47 static int ImplFileLine(); \
48 void *operator new(size_t sz) { return TStorage::ObjectAlloc(sz); } \
49 void *operator new(size_t sz, void *vp) { return vp; } \
50 void Dump();
0f917871 51 static int ImplFileLine();
6fa1c374 52
53#define LClassImp(name) \
54 void name::Dump() { \
55 char parent[256]; \
56 parent[0] = 0; \
57 TDumpMembers dm; \
58 ShowMembers(dm, parent); \
59 } \
60 ClassImp(name)
61
62
63/*
64#define ClassArrayDef(name) \
65private: \
66 static AliArrayVT * fgArrayInfo; \
67public: \
68 static name * Unchecked1DAt(const AliObjectArray & arr, UInt_t index)\
69 { return ((name*)arr.Unchecked1DAt(index));} \
70 static name * Unchecked2DAt(const AliObjectArray & arr, UInt_t index) \
71 { return ((name*)arr.Unchecked2DAt(index));} \
72 static name * UncheckedAt(const AliObjectArray & arr, UInt_t index) \
73 { return (name*)arr.UncheckedAt(index);} \
74 static name * At(const AliObjectArray & arr, UInt_t index) \
75 { return (arr.GetClassInfo()==fgArrayInfo) ? (name*)arr.At(index): 0;} \
76 static name * CastAt(const AliObjectArray & arr, UInt_t index) \
77 { return (name*) ((arr.GetClass())->DynamicCast(Class(), arr.At(index))) ;} \
78 static AliArrayVT * GetArrayInfo(); \
79
80
81
82//This should be in automatic generated code
83#define ClassArrayImp(name) \
84AliArrayVT * name::fgArrayInfo = 0; \
85char *name ##__MakeBuffer(UInt_t size) { return (char*)new name[size];} \
86void name ##__DeleteBuffer(void *p) {delete [] (name*)p;} \
87int name ##__Cmp(char *p1, char * p2){return ((name*)p1)->Compare((name*)p2);} \
88void name ##__StreamObject(TBuffer& b, char * object){ ((name*)object)->Streamer(b);} \
89void name ##__StreamBuffer(TBuffer& b, char * object, UInt_t size ); \
90void name ##__DumpObject(char *p) {return ((name*)p)->Dump();} \
91void name ##__StreamBuffer(TBuffer& b, char * object, UInt_t size ) \
92{ \
93 for (UInt_t i=0;i<size;i++) ((name*)object)[i].Streamer(b); \
94} \
95void name ##__DTORBuffer(void *p) { \
96 ((name*)p)->~name(); \
97} \
98void name ##__CTORBuffer(void *p) { \
99 new (p)name; \
100} \
101void name ##__DTORBuffer(void *p, const UInt_t size) { \
102 name * pp = (name*)p; \
103 name * pmax = pp+size; \
104 while (pp<pmax) (pp++)->~name(); \
105} \
106void name ##__CTORBuffer(void *p, const UInt_t size) { \
107 name * pp = (name*)p; \
108 name * pmax = pp+size; \
109 while (pp<pmax) new (pp++)name; \
110} \
111AliArrayVT *name::GetArrayInfo() \
112{ \
113 if (!fgArrayInfo) { \
114 fgArrayInfo = new AliArrayVT; \
115 fgArrayInfo->cmp = &(name ##__Cmp); \
116 fgArrayInfo->delbuffer = &(name ##__DeleteBuffer); \
117 fgArrayInfo->mkbuffer = &(name ##__MakeBuffer); \
118 fgArrayInfo->ctorbuffer = &(name ##__CTORBuffer); \
119 fgArrayInfo->dtorbuffer = &(name ##__DTORBuffer); \
120 fgArrayInfo->stream = &(name ##__StreamObject); \
121 fgArrayInfo->streamb = &(name ##__StreamBuffer); \
122 fgArrayInfo->dump = &(name ##__DumpObject); \
123 fgArrayInfo->fClass = name::Class(); \
124 fgArrayInfo->fClassName = "name"; \
125 fgArrayInfo->fSize = sizeof(name); \
126 } \
127 return fgArrayInfo; \
128}
129*/
130
131
132#endif // ALI_CTypes