1 #ifndef ALI_SIMPLE_VALUE_H
2 #define ALI_SIMPLE_VALUE_H
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
10 // This class is a simple wrapper of
11 // all primitive types used in PVSS SCADA system.
17 class AliSimpleValue: public TObject {
36 AliSimpleValue(const AliSimpleValue& other);
38 AliSimpleValue(Type type, Int_t size = 0);
40 AliSimpleValue(Bool_t val);
42 AliSimpleValue(Char_t val);
44 AliSimpleValue(Int_t val);
46 AliSimpleValue(UInt_t val);
48 AliSimpleValue(Float_t val);
50 AliSimpleValue(Int_t size, const Bool_t* vals);
52 AliSimpleValue(Int_t size, const Char_t* vals);
54 AliSimpleValue(Int_t size, const Int_t* vals);
56 AliSimpleValue(Int_t size, const UInt_t* vals);
58 AliSimpleValue(Int_t size, const Float_t* vals);
63 AliSimpleValue& operator=(const AliSimpleValue& other);
65 Bool_t operator==(const AliSimpleValue& other) const;
67 void SetBool(Bool_t val);
69 void SetByte(Char_t val);
71 void SetInt(Int_t val);
73 void SetUInt(UInt_t val);
75 void SetFloat(Float_t val);
78 Bool_t GetBool() const;
80 Char_t GetByte() const;
84 UInt_t GetUInt() const;
86 Float_t GetFloat() const;
89 void SetDynBool(Int_t n, Bool_t val);
91 void SetDynByte(Int_t n, Char_t val);
93 void SetDynInt(Int_t n, Int_t val);
95 void SetDynUInt(Int_t n, UInt_t val);
97 void SetDynFloat(Int_t n, Float_t val);
100 Bool_t GetDynBool(Int_t n) const;
102 Char_t GetDynByte(Int_t n) const;
104 Int_t GetDynInt(Int_t n) const;
106 UInt_t GetDynUInt(Int_t n) const;
108 Float_t GetDynFloat(Int_t n) const;
111 Type GetType() const {return fType;};
113 Int_t GetSize() const;
115 Int_t GetDynamicSize() const;
117 TString ToString() const;
120 static Bool_t IsDynamic(Type type);
122 static Int_t GetPrimitiveSize(Type type);
124 static const char* GetTypeString(Type type);
128 class BoolHolder: public TObject {
134 BoolHolder(Bool_t val):fValue(val) {}
136 virtual TObject* Clone(const char* name) const;
138 virtual Bool_t IsEqual(const TObject* object) const;
140 ClassDef(BoolHolder, 1);
143 class ByteHolder: public TObject {
149 ByteHolder(Char_t val):fValue(val) {}
151 virtual TObject* Clone(const char* name) const;
153 virtual Bool_t IsEqual(const TObject* object) const;
155 ClassDef(ByteHolder, 1);
158 class IntHolder: public TObject {
164 IntHolder(Int_t val):fValue(val) {}
166 virtual TObject* Clone(const char* name) const;
168 virtual Bool_t IsEqual(const TObject* object) const;
170 ClassDef(IntHolder, 1);
173 class UIntHolder: public TObject {
179 UIntHolder(UInt_t val):fValue(val) {}
181 virtual TObject* Clone(const char* name) const;
183 virtual Bool_t IsEqual(const TObject* object) const;
185 ClassDef(UIntHolder, 1);
188 class FloatHolder: public TObject {
194 FloatHolder(Float_t val):fValue(val) {}
196 virtual TObject* Clone(const char* name) const;
198 virtual Bool_t IsEqual(const TObject* object) const;
200 ClassDef(FloatHolder, 1);
203 class DynHolder: public TObject {
207 DynHolder(): fSize(0) {}
208 DynHolder(Int_t size): fSize(size){}
210 ClassDef(DynHolder, 0);
213 class DynBoolHolder: public DynHolder {
215 Bool_t* fValues; //[fSize]
217 DynBoolHolder(): fValues(NULL) {}
219 DynBoolHolder(Int_t size, const Bool_t* buf = NULL):
221 fValues = new Bool_t[size];
222 if (buf) memcpy(fValues, buf, size * sizeof(Bool_t));
225 virtual ~DynBoolHolder() {if (fValues) delete[] fValues;}
227 virtual TObject* Clone(const char* name) const;
229 virtual Bool_t IsEqual(const TObject* object) const;
231 ClassDef(DynBoolHolder, 1);
234 class DynByteHolder: public DynHolder {
236 Char_t* fValues; //[fSize]
238 DynByteHolder(): fValues(NULL) {}
240 DynByteHolder(Int_t size, const Char_t* buf = NULL):
242 fValues = new Char_t[size];
243 if (buf) memcpy(fValues, buf, size * sizeof(Char_t));
246 virtual ~DynByteHolder() {if (fValues) delete[] fValues;}
248 virtual TObject* Clone(const char* name) const;
250 virtual Bool_t IsEqual(const TObject* object) const;
252 ClassDef(DynByteHolder, 1);
255 class DynIntHolder: public DynHolder {
257 Int_t* fValues; //[fSize]
259 DynIntHolder(): fValues(NULL) {}
261 DynIntHolder(Int_t size, const Int_t* buf = NULL):
263 fValues = new Int_t[size];
264 if (buf) memcpy(fValues, buf, size * sizeof(Int_t));
267 virtual ~DynIntHolder() {if (fValues) delete[] fValues;}
269 virtual TObject* Clone(const char* name) const;
271 virtual Bool_t IsEqual(const TObject* object) const;
273 ClassDef(DynIntHolder, 1);
276 class DynUIntHolder: public DynHolder {
278 UInt_t* fValues; //[fSize]
280 DynUIntHolder(): fValues(NULL) {}
282 DynUIntHolder(Int_t size, const UInt_t* buf = NULL):
284 fValues = new UInt_t[size];
285 if (buf) memcpy(fValues, buf, size * sizeof(UInt_t));
288 virtual ~DynUIntHolder() {if (fValues) delete[] fValues;}
290 virtual TObject* Clone(const char* name) const;
292 virtual Bool_t IsEqual(const TObject* object) const;
294 ClassDef(DynUIntHolder, 1);
297 class DynFloatHolder: public DynHolder {
299 Float_t* fValues; //[fSize]
301 DynFloatHolder(): fValues(NULL) {}
303 DynFloatHolder(Int_t size, const Float_t* buf = NULL):
305 fValues = new Float_t[size];
306 if (buf) memcpy(fValues, buf, size * sizeof(Float_t));
309 virtual ~DynFloatHolder() {if (fValues) delete[] fValues;}
311 virtual TObject* Clone(const char* name) const;
313 virtual Bool_t IsEqual(const TObject* object) const;
315 ClassDef(DynFloatHolder, 1);
324 Bool_t TypeOk(Type type) const;
326 Bool_t BoundsOk(Int_t n) const;
329 ClassDef(AliSimpleValue, 1);