source: CMT/v1r14p20031120/src/cmt_error.cxx @ 1

Last change on this file since 1 was 1, checked in by arnault, 19 years ago

Import all tags

File size: 3.5 KB
Line 
1
2#include "cmt_error.h"
3#include "cmt_vector.h"
4
5class Error
6{
7public:
8  static Error& instance ();
9
10  Error ()
11      {
12        error_names.add() = "ok";
13        error_names.add() = "Warning";
14        error_names.add() = "symbol not found";
15        error_names.add() = "pattern not found";
16        error_names.add() = "syntax error";
17        error_names.add() = "command_not_implemented";
18        error_names.add() = "package_not_found";
19        error_names.add() = "path_not_found";
20        error_names.add() = "version_conflict";
21        error_names.add() = "file_access_error";
22        error_names.add() = "execution_error";
23        error_names.add() = "cannot_lock";
24        error_names.add() = "cannot_write_lock";
25        error_names.add() = "cannot_run_lock_command";
26        error_names.add() = "cannot_unlock";
27        error_names.add() = "cannot_run_unlock_command";
28        error_names.add() = "cannot_remove_lock";
29        error_names.add() = "conflicting_lock";
30      }
31
32  ~Error ()
33      {
34      }
35
36  void clear ()
37      {
38        m_code = CmtError::ok;
39        m_text = "";
40      }
41
42  void set (CmtError::code code, const cmt_string& text)
43      {
44        m_code = code;
45        m_text = text;
46      }
47
48  CmtError::code get_code () const
49      {
50        return (m_code);
51      }
52
53  const cmt_string& get_text () const
54      {
55        return (m_text);
56      }
57
58  const cmt_string& get_name (CmtError::code error) const
59      {
60        const cmt_string& s = error_names[error];
61
62        return (s);
63      }
64
65private:
66  CmtError::code m_code;
67  cmt_string m_text;
68  cmt_vector<cmt_string> error_names;
69};
70
71//---------------------------------------------------------------
72Error& Error::instance ()
73//---------------------------------------------------------------
74{
75  static Error e;
76 
77  return (e);
78}
79
80//---------------------------------------------------------------
81void CmtError::clear ()
82//---------------------------------------------------------------
83{
84  Error& e = Error::instance ();
85
86  e.clear ();
87}
88
89//---------------------------------------------------------------
90bool CmtError::has_pending_error ()
91//---------------------------------------------------------------
92{
93  Error& e = Error::instance ();
94
95  if (e.get_code () == ok) return (false);
96  else return (true);
97}
98
99//---------------------------------------------------------------
100CmtError::code CmtError::get_last_error_code ()
101//---------------------------------------------------------------
102{
103  Error& e = Error::instance ();
104
105  return (e.get_code ());
106}
107
108//---------------------------------------------------------------
109const cmt_string& CmtError::get_error_name (code error)
110//---------------------------------------------------------------
111{
112  Error& e = Error::instance ();
113
114  return (e.get_name (error));
115}
116
117//---------------------------------------------------------------
118void CmtError::set (code error, const cmt_string& text)
119//---------------------------------------------------------------
120{
121  Error& e = Error::instance ();
122
123  e.set (error, text);
124}
125
126//---------------------------------------------------------------
127cmt_string CmtError::get_last_error ()
128{
129  Error& e = Error::instance ();
130
131  cmt_string result;
132
133  result = get_error_name (e.get_code ());
134  result += " : ";
135  result += e.get_text ();
136
137  return (result);
138}
139
140void CmtError::print ()
141{
142  Error& e = Error::instance ();
143
144  cout << endl;
145  cout << "#CMT> " << get_error_name (e.get_code ()) << " : " << e.get_text () << endl;
146}
147
Note: See TracBrowser for help on using the repository browser.