OMNeT++ NEDXML  5.4.1
errorstore.h
Go to the documentation of this file.
1 //==========================================================================
2 // errorstore.h -
3 //
4 // OMNeT++/OMNEST
5 // Discrete System Simulation in C++
6 //
7 //==========================================================================
8 
9 /*--------------------------------------------------------------*
10  Copyright (C) 2002-2017 Andras Varga
11  Copyright (C) 2006-2017 OpenSim Ltd.
12 
13  This file is distributed WITHOUT ANY WARRANTY. See the file
14  `license' for details on this and other legal matters.
15 *--------------------------------------------------------------*/
16 
17 #ifndef __OMNETPP_NEDXML_ERRORSTORE_H
18 #define __OMNETPP_NEDXML_ERRORSTORE_H
19 
20 #include <vector>
21 #include <exception>
22 #include <stdexcept>
23 #include <string>
24 #include "nedxmldefs.h"
25 
26 namespace omnetpp {
27 namespace nedxml {
28 
29 class ASTNode;
30 
31 // Note: this cannot be inner type because of swig wrapping
33 
38 {
39  private:
40  struct Entry {
41  ASTNode *context;
42  int severity;
43  std::string location;
44  std::string message;
45  };
46 
47  std::vector<Entry> entries;
48  bool doprint;
49 
50  private:
51  void doAdd(ASTNode *context, const char *loc, int severity, const char *message);
52 
53  public:
57  ErrorStore() {doprint = false;}
59 
63  void setPrintToStderr(bool p) {doprint = p;}
64 
68  void addError(ASTNode *context, const char *messagefmt, ...);
69 
73  void addError(const char *location, const char *messagefmt, ...);
74 
78  void addWarning(ASTNode *context, const char *messagefmt, ...);
79 
83  void addWarning(const char *location, const char *messagefmt, ...);
84 
88  void add(ASTNode *context, int severity, const char *messagefmt, ...);
89 
93  void add(const char *location, int severity, const char *messagefmt, ...);
94 
98  bool empty() const {return entries.empty();}
99 
103  int numMessages() const {return entries.size();}
104 
108  bool containsError() const;
109 
113  void clear() {entries.clear();}
114 
117  const char *errorSeverity(int i) const;
118  int errorSeverityCode(int i) const;
119  const char *errorLocation(int i) const;
120  ASTNode *errorContext(int i) const;
121  const char *errorText(int i) const;
123 
128  int findFirstErrorFor(ASTNode *node, int startIndex) const;
129 
133  static const char *severityName(int severity);
134 };
135 
136 
137 #define INTERNAL_ERROR0(context,msg) NedInternalError(__FILE__,__LINE__,context,msg)
138 #define INTERNAL_ERROR1(context,msg,arg1) NedInternalError(__FILE__,__LINE__,context,msg,arg1)
139 #define INTERNAL_ERROR2(context,msg,arg1,arg2) NedInternalError(__FILE__,__LINE__,context,msg,arg1,arg2)
140 #define INTERNAL_ERROR3(context,msg,arg1,arg2,arg3) NedInternalError(__FILE__,__LINE__,context,msg,arg1,arg2,arg3)
141 
147 void NedInternalError(const char *file, int line, ASTNode *context, const char *messagefmt, ...);
148 
149 
150 } // namespace nedxml
151 } // namespace omnetpp
152 
153 
154 #endif
155 
#define NEDXML_API
Definition: nedxmldefs.h:31
bool empty() const
Definition: errorstore.h:98
~ErrorStore()
Definition: errorstore.h:58
void clear()
Definition: errorstore.h:113
Definition: errorstore.h:32
ProblemSeverity
Definition: errorstore.h:32
Definition: errorstore.h:32
Definition: astbuilder.h:25
void setPrintToStderr(bool p)
Definition: errorstore.h:63
Definition: errorstore.h:32
ErrorStore()
Definition: errorstore.h:57
int numMessages() const
Definition: errorstore.h:103
Definition: astnode.h:75
Definition: errorstore.h:37
void NedInternalError(const char *file, int line, ASTNode *context, const char *messagefmt,...)