/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Event/ers/ers-00-00-03/ers/IssueFactory.h

Go to the documentation of this file.
00001 /*
00002  *  IssueFactory.h
00003  *  ers
00004  *
00005  *  Created by Matthias Wiesmann on 30.11.04.
00006  *  Copyright 2004 CERN. All rights reserved.
00007  *
00008  */
00009 
00010 #ifndef ERS_ISSUE_FACTORY
00011 #define ERS_ISSUE_FACTORY
00012 
00013 #include <string>
00014 #include <map>
00015 #include "ers/Core.h"
00016 
00017 namespace ers {
00018 
00019 class Issue ; 
00020     
00031 class IssueFactory {
00032 public:
00033     typedef Issue* (*CreateIssueCallback)();
00034     typedef std::map<std::string,CreateIssueCallback> CallbackMap ; 
00035 protected:
00036     IssueFactory(); 
00037     CallbackMap m_factory_map ; 
00038     static IssueFactory  *s_factory ; 
00039      
00040 public:
00041     static IssueFactory *instance() ;                                             
00042     static void print_registered();                                               
00043     bool register_issue(const std::string &name, CreateIssueCallback creator) ;   
00044     Issue *build(const std::string &name) const ;                                 
00045     Issue *build(const std::string &name, const string_map_type *values) const ;  
00046     Issue *build(const Issue *original);                                          
00047     void write_to(std::ostream& stream) const ;                                   
00048     } ; // IssueFactory
00049 
00050     std::ostream& operator<<(std::ostream&, const IssueFactory& factory);         
00052 } // ers
00053 
00054 #endif
00055 

Generated on Tue Nov 29 22:58:26 2016 for BOSS_7.0.2 by  doxygen 1.4.7