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

ScanWriterFactory.cpp

Go to the documentation of this file.
00001 #include "ScanWriterFactory.h"
00002 #include "ScanResultWriter.h"
00003 #include "ScanDataWriter.h"
00004 #include "Sct/IoExceptions.h"
00005 #include <sstream>
00006 
00007 namespace SctData {
00008 
00009 ScanWriterFactory::ScanWriterFactory() {}
00010 
00011     
00012 ScanWriterFactory& ScanWriterFactory::getFactory() {
00013     static ScanWriterFactory* bertha = new ScanWriterFactory();
00014     return *bertha;
00015 }
00016 
00017 bool ScanWriterFactory::addWriterToMap(UINT16 dataType, ScanResultWriter& resultWriter, ScanDataWriter& dataWriter) {
00018     if (writerMap.find(dataType) != writerMap.end()) return false;
00019     writerMap[dataType] = pair<ScanResultWriter*, ScanDataWriter*>(&resultWriter, &dataWriter);
00020     return true;
00021 }
00022 
00023 ScanDataWriter& ScanWriterFactory::getDataWriter(UINT16 dataType) {
00024     if (getFactory().writerMap.find(dataType) == getFactory().writerMap.end()) {
00025     std::ostringstream oss;
00026     oss << "No ScanDataWriter for dataType: " << dataType;
00027     throw Sct::NoSuchStreamerException("ScanHeader.dataType", oss.str(), __FILE__, __LINE__);
00028     }
00029     return *(getFactory().writerMap[dataType].second);
00030 }
00031 
00032 ScanResultWriter& ScanWriterFactory::getResultWriter(UINT16 dataType) {
00033     if (getFactory().writerMap.find(dataType) == getFactory().writerMap.end()) {
00034         std::ostringstream oss;
00035     oss << "No ScanResultWriter for dataType: " << dataType;
00036     throw Sct::NoSuchStreamerException("ScanHeader.dataType", oss.str(), __FILE__, __LINE__);
00037     }
00038     return *(getFactory().writerMap[dataType].first);   
00039 }
00040 
00041 
00042 }

Generated on Mon Dec 15 19:36:15 2003 for SCT DAQ/DCS Software by doxygen1.3-rc3