ROOT logo
//*-- AUTHOR : Denis Bertini
//*-- Last modified : 21/05/99 by Ilse Koenig

//_HADES_CLASS_DESCRIPTION 
///////////////////////////////////////////////////////////////////////////////
// HParAsciiFileIo
//
// Interface class for parameter I/O from ASCII file
// derived from the interface base class HParIo
// 
// It contains pointers to the ASCII file and to the interface classes for all
// detectors defined in the actual setup.
//
// This class was created by renaming the former class HParAsciFileIo.
// 
///////////////////////////////////////////////////////////////////////////////

#include "hparasciifileio.h"
#include "hdetpario.h"
#include "hades.h"
#include "hspectrometer.h"
#include <string.h>

ClassImp(HParAsciiFileIo)

HParAsciiFileIo::HParAsciiFileIo() {
  // default destructor
  file=0;
}

HParAsciiFileIo::~HParAsciiFileIo() {
  // default destructor closes an open file and deletes list of I/Os
  close();
}

Bool_t HParAsciiFileIo::open(const Text_t* fname,const Text_t* status) {
  // opens file
  // if a file is already open, this file will be closed
  // activates detector I/Os
  close();
  if(!((strcmp(status,"in")==0) || (strcmp(status,"out")==0))){
    printf(" put the right stream option for file :%2s\n",fname);
    printf(" writing state : out \n");
    printf(" reading state : in  \n");
    printf(" open  aborted \n");
    return kFALSE;
  }

  file=new fstream();
  if(strcmp(status,"in")==0){file->open( fname, ios::in);};
  if(strcmp(status,"out")==0){file->open( fname, ios::out);};

  filebuf* buf = file->rdbuf();
  if (file && (buf->is_open()==1)) {
    inputName=fname;
    gHades->getSetup()->activateParIo(this);
    return kTRUE;
  }
  return kFALSE;
}

void HParAsciiFileIo::close() {
  // closes the file and deletes the detector I/Os
  if (file) {
    file->close();
    delete file;
    file=0;
    inputName="";
  }
  if (detParIoList) detParIoList->Delete();
}

void HParAsciiFileIo::print() {
  // prints information about the file and the detector I/Os
  if (check()) {
    printf("HParAsciiFile*          %s\n",inputName.Data());
    TIter next(detParIoList);
    HDetParIo* io;
    cout<<"detector I/Os: ";
    while ((io=(HDetParIo*)next())) {
      cout<<" "<<io->GetName();
    }
    cout<<'\n';
  }
  else printf("No pointer to file\n");
}

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