Line data Source code
1 : /*
2 : * AnyIssue.h
3 : * ers
4 : *
5 : * Created by Serguei Kolos on 26.06.10.
6 : * Copyright 2010 CERN. All rights reserved.
7 : *
8 : */
9 :
10 : #ifndef ERS_ANY_ISSUE_H
11 : #define ERS_ANY_ISSUE_H
12 :
13 : /** \file AnyIssue.h
14 : * This file defines the ers::AnyIssue class
15 : */
16 :
17 : #include <ers/Issue.hpp>
18 :
19 : namespace ers
20 : {
21 : class AnyIssue : public ers::Issue
22 : {
23 :
24 : friend class IssueFactory;
25 :
26 : public:
27 0 : AnyIssue( const std::string & type,
28 : const ers::Context & context,
29 : const std::string & message = "" )
30 0 : : ers::Issue( context, message ),
31 0 : m_type( type )
32 0 : { ; }
33 :
34 0 : AnyIssue( const std::string & type,
35 : const inheritance_type & chain,
36 : Severity severity,
37 : const ers::Context & context,
38 : const system_clock::time_point & time,
39 : const std::string & message,
40 : const std::vector<std::string> & qualifiers,
41 : const std::map<std::string, std::string> & parameters,
42 : const ers::Issue * cause = 0 )
43 0 : : ers::Issue( severity, time, context, message, qualifiers, parameters, cause ),
44 0 : m_type( type ),
45 0 : m_inheritance( chain )
46 0 : { ; }
47 :
48 0 : ~AnyIssue() noexcept { ; }
49 :
50 0 : virtual ers::Issue * clone() const
51 0 : { return new AnyIssue( *this ); }
52 :
53 0 : virtual const char * get_class_name() const
54 0 : { return m_type.c_str(); }
55 :
56 0 : virtual inheritance_type get_class_inheritance() const final {
57 0 : return m_inheritance ;
58 : }
59 :
60 0 : virtual void raise() const
61 0 : { throw AnyIssue(*this); }
62 :
63 : private:
64 : std::string m_type;
65 : inheritance_type m_inheritance;
66 : };
67 : }
68 :
69 : #endif
70 :
|