File: parser_exception.h

package info (click to toggle)
dynare 4.4.3-3
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 41,356 kB
  • ctags: 15,842
  • sloc: cpp: 77,029; ansic: 29,056; pascal: 13,241; sh: 4,811; objc: 3,061; yacc: 3,013; makefile: 1,479; lex: 1,258; python: 162; lisp: 54; xml: 8
file content (71 lines) | stat: -rw-r--r-- 2,253 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
// Copyright (C) 2006, Ondra Kamenik

// $Id: parser_exception.h 1761 2008-03-31 14:27:13Z kamenik $

#ifndef OG_FORMULA_PARSER_H
#define OG_FORMULA_PARSER_H

#include <string>

namespace ogp {
	using std::string;

	/** This is an easy exception, which, besides the message, stores
	 * also an offset of the parse error. Since we might need to track
	 * the argument number and for example the filed in the argument
	 * which caused the error, we add three integers, which have no
	 * semantics here. They should be documented in the function which
	 * throws an exception and sets them. Their default value is -1,
	 * which means they have not been set. */
	class ParserException {
	protected:
		char* mes;
		int off;
		int aux_i1;
		int aux_i2;
		int aux_i3;
	public:
		ParserException(const char* m, int offset);
		ParserException(const string& m, int offset);
		ParserException(const string& m, const char* dum, int i1);
		ParserException(const string& m, const char* dum, int i1, int i2);
		ParserException(const string& m, const char* dum, int i1, int i2, int i3);
		ParserException(const ParserException& e, int plus_offset);
		/** Makes a copy and pushes given integer to aux_i1 shuffling
		 * others and forgetting the last. */
		ParserException(const ParserException& e, const char* dum, int i);
		/** Makes a copy and pushes given two integers to aux_i1 and aux_i2  shuffling
		 * others and forgetting the last two. */
		ParserException(const ParserException& e, const char* dum, int i1, int i2);
		/** Makes a copy and pushes given three integers to aux_i1, aux_i2, aus_i3 shuffling
		 * others and forgetting the last three. */
		ParserException(const ParserException& e, const char* dum, int i1, int i2, int i3);
		ParserException(const ParserException& e);
		virtual ~ParserException();
		void print(FILE* fd) const;
		const char* message() const
			{return mes;}
		int offset() const
			{return off;}
		const int& i1() const
			{return aux_i1;}
		int& i1()
			{return aux_i1;}
		const int& i2() const
			{return aux_i2;}
		int& i2()
			{return aux_i2;}
		const int& i3() const
			{return aux_i3;}
		int& i3()
			{return aux_i3;}
	protected:
		void copy(const ParserException& e);
	};
};

#endif

// Local Variables:
// mode:C++
// End: