ROOT logo
#ifndef ALI_DCS_VALUE_H
#define ALI_DCS_VALUE_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */

//
// This class represents the value(s) of a DCS data point at a given timestamp
//

#include <TObject.h>

class AliDCSValue : public TObject {
public:
  enum Type {
    kInvalid = 0,

    kBool = 1,
    kChar = 2,
    kInt = 3,
    kUInt = 4,
    kFloat = 5
  };

  AliDCSValue();
  AliDCSValue(const AliDCSValue& c);

  virtual ~AliDCSValue();

  AliDCSValue& operator=(const AliDCSValue& c);
  virtual void Copy(TObject& c) const;

  AliDCSValue(Bool_t value, UInt_t timeStamp);
  AliDCSValue(Char_t value, UInt_t timeStamp);
  AliDCSValue(Int_t value, UInt_t timeStamp);
  AliDCSValue(UInt_t value, UInt_t timeStamp);
  AliDCSValue(Float_t value, UInt_t timeStamp);

  Bool_t GetBool() const;
  Char_t GetChar() const;
  Int_t GetInt() const;
  UInt_t GetUInt() const;
  Float_t GetFloat() const;

  operator Bool_t() const { return GetBool(); }
  operator Char_t() const { return GetChar(); }
  operator Int_t() const { return GetInt(); }
  operator UInt_t() const { return GetUInt(); }
  operator Float_t() const { return GetFloat(); }

  Type GetType() const { return fType; }

  UInt_t GetTimeStamp() const { return fTimeStamp; }
  void SetTimeStamp(UInt_t timeStamp) { fTimeStamp = timeStamp; }

  Int_t GetSize() const;

  const Char_t* ToString() const;
  void Print(Option_t* /*opt*/) const;


/**********************************************/

  Int_t Compare(const TObject* obj) const
    { if( fTimeStamp < ((AliDCSValue *)obj )->fTimeStamp ) return -1;
      if( fTimeStamp == ((AliDCSValue *)obj )->fTimeStamp ) return 0;
      return 1;
    }

  Bool_t IsSortable() const { return kTRUE; }

/*********************************************/


protected:
  void Init();

  Type fType;           // type of the value stored

  Bool_t fBool;         // bool value
  Char_t fChar;         // char value
  Int_t fInt;           // int value
  UInt_t fUInt;         // uint value
  Float_t fFloat;       // float value

  UInt_t fTimeStamp;    // timestamp of this value

	ClassDef(AliDCSValue, 2);
};

#endif
 AliDCSValue.h:1
 AliDCSValue.h:2
 AliDCSValue.h:3
 AliDCSValue.h:4
 AliDCSValue.h:5
 AliDCSValue.h:6
 AliDCSValue.h:7
 AliDCSValue.h:8
 AliDCSValue.h:9
 AliDCSValue.h:10
 AliDCSValue.h:11
 AliDCSValue.h:12
 AliDCSValue.h:13
 AliDCSValue.h:14
 AliDCSValue.h:15
 AliDCSValue.h:16
 AliDCSValue.h:17
 AliDCSValue.h:18
 AliDCSValue.h:19
 AliDCSValue.h:20
 AliDCSValue.h:21
 AliDCSValue.h:22
 AliDCSValue.h:23
 AliDCSValue.h:24
 AliDCSValue.h:25
 AliDCSValue.h:26
 AliDCSValue.h:27
 AliDCSValue.h:28
 AliDCSValue.h:29
 AliDCSValue.h:30
 AliDCSValue.h:31
 AliDCSValue.h:32
 AliDCSValue.h:33
 AliDCSValue.h:34
 AliDCSValue.h:35
 AliDCSValue.h:36
 AliDCSValue.h:37
 AliDCSValue.h:38
 AliDCSValue.h:39
 AliDCSValue.h:40
 AliDCSValue.h:41
 AliDCSValue.h:42
 AliDCSValue.h:43
 AliDCSValue.h:44
 AliDCSValue.h:45
 AliDCSValue.h:46
 AliDCSValue.h:47
 AliDCSValue.h:48
 AliDCSValue.h:49
 AliDCSValue.h:50
 AliDCSValue.h:51
 AliDCSValue.h:52
 AliDCSValue.h:53
 AliDCSValue.h:54
 AliDCSValue.h:55
 AliDCSValue.h:56
 AliDCSValue.h:57
 AliDCSValue.h:58
 AliDCSValue.h:59
 AliDCSValue.h:60
 AliDCSValue.h:61
 AliDCSValue.h:62
 AliDCSValue.h:63
 AliDCSValue.h:64
 AliDCSValue.h:65
 AliDCSValue.h:66
 AliDCSValue.h:67
 AliDCSValue.h:68
 AliDCSValue.h:69
 AliDCSValue.h:70
 AliDCSValue.h:71
 AliDCSValue.h:72
 AliDCSValue.h:73
 AliDCSValue.h:74
 AliDCSValue.h:75
 AliDCSValue.h:76
 AliDCSValue.h:77
 AliDCSValue.h:78
 AliDCSValue.h:79
 AliDCSValue.h:80
 AliDCSValue.h:81
 AliDCSValue.h:82
 AliDCSValue.h:83
 AliDCSValue.h:84
 AliDCSValue.h:85
 AliDCSValue.h:86
 AliDCSValue.h:87
 AliDCSValue.h:88
 AliDCSValue.h:89
 AliDCSValue.h:90
 AliDCSValue.h:91
 AliDCSValue.h:92
 AliDCSValue.h:93