File: actionexception.h

package info (click to toggle)
actiona 3.10.1-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye
  • size: 7,312 kB
  • sloc: cpp: 57,403; ansic: 90; xml: 27; makefile: 19
file content (97 lines) | stat: -rw-r--r-- 2,941 bytes parent folder | download | duplicates (2)
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
/*
	Actiona
	Copyright (C) 2005 Jonathan Mercier-Ganady

	Actiona is free software: you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation, either version 3 of the License, or
	(at your option) any later version.

	Actiona is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with this program. If not, see <http://www.gnu.org/licenses/>.

	Contact : jmgr@jmgr.info
*/

#pragma once

#include "actiontools_global.h"

#include <QMetaType>
#include <QString>

namespace ActionTools
{
	class ACTIONTOOLSSHARED_EXPORT ActionException
	{
	public:
		enum Exception
		{
			InvalidParameterException,
			CodeErrorException,
			TimeoutException,

			ExceptionCount,
			UserException = 32
		};
		enum ExceptionAction
		{
			StopExecutionExceptionAction,
			SkipExceptionAction,
			GotoLineExceptionAction,

			ExceptionActionCount
		};

		class ExceptionActionInstance
		{
		public:
            ExceptionActionInstance()                   = default;
			ExceptionActionInstance(ExceptionAction action, const QString &line)
				: mAction(action), mLine(line)			{}

			void setAction(ExceptionAction action)		{ mAction = action; }
			void setLine(const QString &line)			{ mLine = line; }

			ExceptionAction action() const				{ return mAction; }
			QString line() const						{ return mLine; }
			
			bool operator ==(const ExceptionActionInstance &other) const
			{
				return (mAction == other.mAction && mLine == other.mLine);
			}

		private:
			ExceptionAction mAction{StopExecutionExceptionAction};
			QString mLine;
		};

		ActionException(int id, const QString &name)
			: mId(id), mName(name)								{}

		int id() const											{ return mId; }
		QString name() const									{ return mName; }

		static QString ExceptionName[ExceptionCount];
		static ExceptionAction ExceptionDefaultAction[ExceptionCount];
		static QString ExceptionActionName[ExceptionActionCount];

	private:
		int mId;
		QString mName;
	};

	ACTIONTOOLSSHARED_EXPORT QDataStream &operator >> (QDataStream &s, ActionException::Exception &exception);
	ACTIONTOOLSSHARED_EXPORT QDataStream &operator >> (QDataStream &s, ActionException::ExceptionAction &exceptionAction);
	ACTIONTOOLSSHARED_EXPORT QDataStream &operator >> (QDataStream &s, ActionException::ExceptionActionInstance &exceptionActionInstance);
	ACTIONTOOLSSHARED_EXPORT QDataStream &operator << (QDataStream &s, const ActionException::ExceptionActionInstance &exceptionActionInstance);
	ACTIONTOOLSSHARED_EXPORT QDebug &operator << (QDebug &dbg, const ActionException::ExceptionActionInstance &exceptionActionInstance);
}

Q_DECLARE_METATYPE(ActionTools::ActionException::Exception)