Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Related Pages

DefectIOHelper.h

00001 #ifndef SCTDATA_DEFECTIOHELPER_H
00002 #define SCTDATA_DEFECTIOHELPER_H
00003 
00004 #include "DefectPrototype.h"
00005 #include "Sct/LogicErrors.h"
00006 #include "Sct/SctNames.h"
00007 #include <sstream>
00008 
00009 namespace SctData {
00010 class DefectIOHelper {
00011 public: 
00016     int getRepresentation(const DefectPrototype& defect) const;
00017     
00022     const DefectPrototype& getFromRep(int id) const;
00023 };
00024 
00025 //Inlines
00026 inline int DefectIOHelper::getRepresentation(const DefectPrototype& defect) const {
00027     return defect.id;
00028 }
00029 
00030 inline const DefectPrototype& DefectIOHelper::getFromRep(int id) const {
00031     if (DefectPrototype::getMap().find(id)==DefectPrototype::getMap().end() ){
00032       // DIAGNOSTIC Message
00033       const std::map<int, DefectPrototype*>& theMap=DefectPrototype::getMap();
00034       std::ostringstream oss1;
00035       oss1 << "There are " << theMap.size() << " known DefectPrototypes:" << std::endl;
00036       for (std::map<int, DefectPrototype*>::const_iterator it = theMap.begin();
00037        it!=theMap.end();
00038        ++it){
00039     oss1 << (*it).first << " -> " << (*it).second->getName() << std::endl;
00040       }
00041       Sct::SctNames::Mrs() << "SCT_IO" << MRS_TEXT(oss1.str()) << MRS_DIAGNOSTIC << ENDM;
00042       // ERROR message
00043       std::ostringstream os; os<<"DefectIOHelper::getFromRep : no representation "<<id;
00044       throw Sct::InvalidArgumentError(os.str(), __FILE__, __LINE__);
00045     }
00046     return *DefectPrototype::getMap()[id];
00047 }
00048 
00049 }
00050 #endif //#ifndef SCTDATA_DEFECTIOHELPER_H

Generated on Thu Jul 15 09:50:44 2004 for SCT DAQ/DCS Software - C++ by doxygen 1.3.5