]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONSt1IniReader.h
Code for MUON Station1 (I.Hrivnacova)
[u/mrichter/AliRoot.git] / MUON / AliMUONSt1IniReader.h
1 #ifndef ALI_MUON_ST1_INI_READER_H
2 #define ALI_MUON_ST1_INI_READER_H
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 // Authors: David Guez, Ivana Hrivnacova, Marion MacCormick; IPN Orsay
9 //
10 // Class AliMUONIniReader
11 // ----------------------
12 // General class to read data in ASCII file format,
13 // similar to the Windows ".ini" files (a set of sections tagged by a 
14 //                      [ sectionName ]
15 //  and values defined in the way:
16 //                    parameterName = value
17 //
18 // comment lines can be introduced if the first non-blank character
19 // is either ';' or '#'
20
21
22 #include <string>
23 #include <vector>
24 #include <map>
25 #include <utility>
26 #include <fstream>
27
28 #include "AliMUONSt1Types.h"
29
30 class AliMUONSt1IniReader
31 {
32   public:
33     enum TType {kUndef,kChapter,kValue};
34
35     typedef pair<string,string> TValuePair;
36     typedef vector<TValuePair> TValueList;
37     typedef pair<string,TValueList> TChapter;
38     typedef multimap <string,TValueList> TChapterList;
39
40   public:
41     AliMUONSt1IniReader();
42     AliMUONSt1IniReader(string fileName);
43     virtual ~AliMUONSt1IniReader();
44   
45     bool   ReadNextLine();
46     TType  GetCurrentType()  const  {return fCurrentType; }
47     string GetCurrentName()  const  {return fCurrentName; }
48     string GetCurrentValue() const  {return fCurrentValue;}
49     TChapter     MakeCurrentChapter();
50     TValueList   MakeCurrentValueList();
51     TChapterList MakeChapterList();
52     bool Eof() {return fEndOfFile;}
53     void Reset() ;
54
55   private:
56     string trail(const string& s) const;
57
58     ifstream fFile;        // the file to be read
59     TType    fCurrentType; // current type of line (either kChapter or kValue)
60     string   fCurrentName; // name of chapter / name of parameter pair
61     string   fCurrentValue;// value of the parameter pair if the type is kValue
62     bool     fEndOfFile;   // true if the file is entirely read
63 };
64
65 #endif //ALI_MUON_ST1_INI_READER_H