ROOT logo
//-*- Mode: C++ -*-
// $Id$
#ifndef ALIHLTDATAINFLATERSIMPLE_H
#define ALIHLTDATAINFLATERSIMPLE_H
//* This file is property of and copyright by the ALICE HLT Project        * 
//* ALICE Experiment at CERN, All rights reserved.                         *
//* See cxx source for full Copyright notice                               *

/// @file   AliHLTDataInflaterSimple.h
/// @author Matthias Richter
/// @date   2011-09-01
/// @brief  Data inflater implementation for format of AliHLTDataDeflaterSimple
/// @note   

#include "AliHLTDataInflater.h"
#include "AliHLTDataDeflaterSimple.h"

class AliHLTDataInflaterSimple : public AliHLTDataInflater
{
public:
  /// standard constructor
  AliHLTDataInflaterSimple();
  /// destructor
  ~AliHLTDataInflaterSimple();

  /// add a parameter definition to the configuration, return reference id
  int AddParameterDefinition(const char* name, int bitLength, int reducedBitLength);

  /// overloaded from AliHLTDataInflater
  virtual bool NextValue(AliHLTUInt64_t& value, AliHLTUInt32_t& length);
  /// switch to next parameter
  virtual int NextParameter() {
    if (fParameterDefinitions.size()==0) return -1;
    if (fLegacyMode>0) return fCurrentParameter;
    fLegacyMode=0;
    if ((++fCurrentParameter)>=(int)fParameterDefinitions.size()) fCurrentParameter=0;
    return fCurrentParameter;
  }

protected:
private:
  /** copy constructor prohibited */
  AliHLTDataInflaterSimple(const AliHLTDataInflaterSimple&);
  /** assignment operator prohibited */
  AliHLTDataInflaterSimple& operator=(const AliHLTDataInflaterSimple&);

  /// parameter definitions
  vector<AliHLTDataDeflaterSimple::AliHLTDataDeflaterParameter> fParameterDefinitions; //!

  /// current parameter during reading
  int fCurrentParameter; //!
  /// legacy mode to handle code not using NextParameter()
  int fLegacyMode;

  ClassDef(AliHLTDataInflaterSimple, 0)
};

#endif //ALIHLTDATAINFLATERSIMPLE_H
 AliHLTDataInflaterSimple.h:1
 AliHLTDataInflaterSimple.h:2
 AliHLTDataInflaterSimple.h:3
 AliHLTDataInflaterSimple.h:4
 AliHLTDataInflaterSimple.h:5
 AliHLTDataInflaterSimple.h:6
 AliHLTDataInflaterSimple.h:7
 AliHLTDataInflaterSimple.h:8
 AliHLTDataInflaterSimple.h:9
 AliHLTDataInflaterSimple.h:10
 AliHLTDataInflaterSimple.h:11
 AliHLTDataInflaterSimple.h:12
 AliHLTDataInflaterSimple.h:13
 AliHLTDataInflaterSimple.h:14
 AliHLTDataInflaterSimple.h:15
 AliHLTDataInflaterSimple.h:16
 AliHLTDataInflaterSimple.h:17
 AliHLTDataInflaterSimple.h:18
 AliHLTDataInflaterSimple.h:19
 AliHLTDataInflaterSimple.h:20
 AliHLTDataInflaterSimple.h:21
 AliHLTDataInflaterSimple.h:22
 AliHLTDataInflaterSimple.h:23
 AliHLTDataInflaterSimple.h:24
 AliHLTDataInflaterSimple.h:25
 AliHLTDataInflaterSimple.h:26
 AliHLTDataInflaterSimple.h:27
 AliHLTDataInflaterSimple.h:28
 AliHLTDataInflaterSimple.h:29
 AliHLTDataInflaterSimple.h:30
 AliHLTDataInflaterSimple.h:31
 AliHLTDataInflaterSimple.h:32
 AliHLTDataInflaterSimple.h:33
 AliHLTDataInflaterSimple.h:34
 AliHLTDataInflaterSimple.h:35
 AliHLTDataInflaterSimple.h:36
 AliHLTDataInflaterSimple.h:37
 AliHLTDataInflaterSimple.h:38
 AliHLTDataInflaterSimple.h:39
 AliHLTDataInflaterSimple.h:40
 AliHLTDataInflaterSimple.h:41
 AliHLTDataInflaterSimple.h:42
 AliHLTDataInflaterSimple.h:43
 AliHLTDataInflaterSimple.h:44
 AliHLTDataInflaterSimple.h:45
 AliHLTDataInflaterSimple.h:46
 AliHLTDataInflaterSimple.h:47
 AliHLTDataInflaterSimple.h:48
 AliHLTDataInflaterSimple.h:49
 AliHLTDataInflaterSimple.h:50
 AliHLTDataInflaterSimple.h:51
 AliHLTDataInflaterSimple.h:52
 AliHLTDataInflaterSimple.h:53
 AliHLTDataInflaterSimple.h:54
 AliHLTDataInflaterSimple.h:55
 AliHLTDataInflaterSimple.h:56
 AliHLTDataInflaterSimple.h:57
 AliHLTDataInflaterSimple.h:58