2014-04-30 07:32:29 +02:00
|
|
|
/***************************************************************************************************
|
|
|
|
**
|
2015-02-27 11:21:09 +01:00
|
|
|
** Copyright (C) 2013 Ingo Berg
|
2014-04-30 07:32:29 +02:00
|
|
|
**
|
|
|
|
** Permission is hereby granted, free of charge, to any person obtaining a copy of this
|
|
|
|
** software and associated documentation files (the "Software"), to deal in the Software
|
|
|
|
** without restriction, including without limitation the rights to use, copy, modify,
|
|
|
|
** merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
|
|
|
|
** permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
|
|
**
|
|
|
|
** The above copyright notice and this permission notice shall be included in all copies or
|
|
|
|
** substantial portions of the Software.
|
|
|
|
**
|
|
|
|
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
|
|
|
|
** NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
|
|
** NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
|
|
|
** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
|
|
** OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
|
|
**
|
|
|
|
******************************************************************************************************/
|
|
|
|
|
|
|
|
#include "qmuparsererror.h"
|
|
|
|
|
|
|
|
#include <QTextStream>
|
2014-12-21 21:33:31 +01:00
|
|
|
#include <QDebug>
|
2014-04-30 07:32:29 +02:00
|
|
|
|
2014-10-17 22:26:30 +02:00
|
|
|
#ifdef Q_OS_WIN
|
|
|
|
#include <assert.h>
|
|
|
|
#endif
|
|
|
|
|
2014-04-30 07:32:29 +02:00
|
|
|
namespace qmu
|
|
|
|
{
|
|
|
|
const QmuParserErrorMsg QmuParserErrorMsg::m_Instance;
|
|
|
|
|
2014-05-01 13:33:40 +02:00
|
|
|
//---------------------------------------------------------------------------------------------------------------------
|
2014-04-30 07:32:29 +02:00
|
|
|
QmuParserErrorMsg::~QmuParserErrorMsg()
|
|
|
|
{}
|
|
|
|
|
2015-10-15 11:32:50 +02:00
|
|
|
#define translate(source, disambiguation) QmuTranslation::translate("QmuParserErrorMsg", (source), (disambiguation))
|
2015-10-08 07:24:15 +02:00
|
|
|
|
2014-05-01 13:33:40 +02:00
|
|
|
//---------------------------------------------------------------------------------------------------------------------
|
2014-04-30 07:32:29 +02:00
|
|
|
QmuParserErrorMsg::QmuParserErrorMsg()
|
2014-12-04 18:28:47 +01:00
|
|
|
: m_vErrMsg ()
|
2014-04-30 07:32:29 +02:00
|
|
|
{
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.clear();
|
2014-05-01 13:33:40 +02:00
|
|
|
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecUNASSIGNABLE_TOKEN,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("Unexpected token \"$TOK$\" found at position $POS$.",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages. Left untouched \"$TOK$\" and $POS$"));
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecINTERNAL_ERROR,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("Internal error",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages."));
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecINVALID_NAME,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("Invalid function-, variable- or constant name: \"$TOK$\".",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages. Left untouched \"$TOK$\""));
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecINVALID_BINOP_IDENT,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("Invalid binary operator identifier: \"$TOK$\".",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages. Left untouched \"$TOK$\""));
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecINVALID_INFIX_IDENT,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("Invalid infix operator identifier: \"$TOK$\".",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages. Left untouched \"$TOK$\""));
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecINVALID_POSTFIX_IDENT,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("Invalid postfix operator identifier: \"$TOK$\".",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages. Left untouched \"$TOK$\""));
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecINVALID_FUN_PTR,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("Invalid pointer to callback function.",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages."));
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecEMPTY_EXPRESSION,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("Expression is empty.",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages."));
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecINVALID_VAR_PTR,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("Invalid pointer to variable.",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages."));
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecUNEXPECTED_OPERATOR,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("Unexpected operator \"$TOK$\" found at position $POS$",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages. Left untouched \"$TOK$\" and $POS$"));
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecUNEXPECTED_EOF,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("Unexpected end of expression at position $POS$",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages. Left untouched $POS$"));
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecUNEXPECTED_ARG_SEP,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("Unexpected argument separator at position $POS$",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages. Left untouched $POS$"));
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecUNEXPECTED_PARENS,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("Unexpected parenthesis \"$TOK$\" at position $POS$",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages. Left untouched \"$TOK$\" and $POS$"));
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecUNEXPECTED_FUN,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("Unexpected function \"$TOK$\" at position $POS$",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages. Left untouched \"$TOK$\" and $POS$"));
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecUNEXPECTED_VAL,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("Unexpected value \"$TOK$\" found at position $POS$",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages. Left untouched \"$TOK$\" and $POS$"));
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecUNEXPECTED_VAR,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("Unexpected variable \"$TOK$\" found at position $POS$",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages. Left untouched \"$TOK$\" and $POS$"));
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecUNEXPECTED_ARG,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("Function arguments used without a function (position: $POS$)",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages. Left untouched $POS$"));
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecMISSING_PARENS,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("Missing parenthesis",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages."));
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecTOO_MANY_PARAMS,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("Too many parameters for function \"$TOK$\" at expression position $POS$",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages. Left untouched \"$TOK$\" and $POS$"));
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecTOO_FEW_PARAMS,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("Too few parameters for function \"$TOK$\" at expression position $POS$",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages. Left untouched \"$TOK$\" and $POS$"));
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecDIV_BY_ZERO,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("Divide by zero",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages."));
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecDOMAIN_ERROR,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("Domain error",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages."));
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecNAME_CONFLICT,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("Name conflict",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages."));
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecOPT_PRI,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("Invalid value for operator priority (must be greater or equal to zero).",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages."));
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecBUILTIN_OVERLOAD,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("user defined binary operator \"$TOK$\" conflicts with a built in operator.",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages. Left untouched \"$TOK$\""));
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecUNEXPECTED_STR,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("Unexpected string token found at position $POS$.",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages. Left untouched $POS$"));
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecUNTERMINATED_STRING,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("Unterminated string starting at position $POS$.",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages. Left untouched $POS$"));
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecSTRING_EXPECTED,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("String function called with a non string type of argument.",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages."));
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecVAL_EXPECTED,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("String value used where a numerical argument is expected.",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages."));
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecOPRT_TYPE_CONFLICT,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("No suitable overload for operator \"$TOK$\" at position $POS$.",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages. Left untouched \"$TOK$\" and $POS$"));
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecSTR_RESULT,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("Function result is a string.",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages."));
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecGENERIC,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("Parser error.",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages."));
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecLOCALE,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("Decimal separator is identic to function argument separator.",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages."));
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecUNEXPECTED_CONDITIONAL,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("The \"$TOK$\" operator must be preceeded by a closing bracket.",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages. Left untouched \"$TOK$\""));
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecMISSING_ELSE_CLAUSE,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("If-then-else operator is missing an else clause",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages. Do not translate operator name."));
|
2014-12-04 18:28:47 +01:00
|
|
|
m_vErrMsg.insert(ecMISPLACED_COLON,
|
2015-10-15 11:32:50 +02:00
|
|
|
translate("Misplaced colon at position $POS$",
|
2015-10-08 07:24:15 +02:00
|
|
|
"Math parser error messages. Left untouched $POS$"));
|
2014-04-30 07:32:29 +02:00
|
|
|
}
|
|
|
|
|
2015-10-15 11:32:50 +02:00
|
|
|
#undef translate
|
2015-10-08 07:24:15 +02:00
|
|
|
|
2014-05-01 13:33:40 +02:00
|
|
|
//---------------------------------------------------------------------------------------------------------------------
|
2014-04-30 07:32:29 +02:00
|
|
|
//
|
|
|
|
// QParserError class
|
|
|
|
//
|
2014-05-01 13:33:40 +02:00
|
|
|
//---------------------------------------------------------------------------------------------------------------------
|
2014-04-30 07:32:29 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Default constructor.
|
|
|
|
*/
|
|
|
|
QmuParserError::QmuParserError()
|
2014-05-06 11:45:21 +02:00
|
|
|
: QException(), m_sMsg(), m_sExpr(), m_sTok(), m_iPos ( -1 ), m_iErrc ( ecUNDEFINED ),
|
2014-05-01 13:33:40 +02:00
|
|
|
m_ErrMsg ( QmuParserErrorMsg::Instance() )
|
2014-05-05 09:29:14 +02:00
|
|
|
{}
|
2014-04-30 07:32:29 +02:00
|
|
|
|
2014-05-01 13:33:40 +02:00
|
|
|
//---------------------------------------------------------------------------------------------------------------------
|
2014-04-30 07:32:29 +02:00
|
|
|
/**
|
|
|
|
* @brief This Constructor is used for internal exceptions only.
|
|
|
|
*
|
|
|
|
* It does not contain any information but the error code.
|
|
|
|
*/
|
|
|
|
QmuParserError::QmuParserError ( EErrorCodes a_iErrc )
|
2014-05-06 11:45:21 +02:00
|
|
|
: QException(), m_sMsg(), m_sExpr(), m_sTok(), m_iPos ( -1 ), m_iErrc ( a_iErrc ),
|
2014-05-01 13:33:40 +02:00
|
|
|
m_ErrMsg ( QmuParserErrorMsg::Instance() )
|
2014-04-30 07:32:29 +02:00
|
|
|
{
|
2014-05-05 09:29:14 +02:00
|
|
|
m_sMsg = m_ErrMsg[m_iErrc];
|
2014-05-30 21:03:17 +02:00
|
|
|
m_sMsg.replace("$POS$", QString().setNum ( m_iPos ));
|
|
|
|
m_sMsg.replace("$TOK$", m_sTok );
|
2014-04-30 07:32:29 +02:00
|
|
|
}
|
|
|
|
|
2014-05-01 13:33:40 +02:00
|
|
|
//---------------------------------------------------------------------------------------------------------------------
|
2014-04-30 07:32:29 +02:00
|
|
|
/**
|
|
|
|
* @brief Construct an error from a message text.
|
|
|
|
*/
|
|
|
|
QmuParserError::QmuParserError ( const QString &sMsg )
|
2014-05-06 11:45:21 +02:00
|
|
|
: QException(), m_sMsg(sMsg), m_sExpr(), m_sTok(), m_iPos ( -1 ), m_iErrc ( ecUNDEFINED ),
|
2014-05-01 13:33:40 +02:00
|
|
|
m_ErrMsg ( QmuParserErrorMsg::Instance() )
|
2014-05-01 11:55:23 +02:00
|
|
|
{}
|
2014-04-30 07:32:29 +02:00
|
|
|
|
2014-05-01 13:33:40 +02:00
|
|
|
//---------------------------------------------------------------------------------------------------------------------
|
2014-04-30 07:32:29 +02:00
|
|
|
/**
|
|
|
|
* @brief Construct an error object.
|
2014-09-11 18:52:02 +02:00
|
|
|
* @param [in] iErrc the error code.
|
2014-04-30 07:32:29 +02:00
|
|
|
* @param [in] sTok The token string related to this error.
|
|
|
|
* @param [in] sExpr The expression related to the error.
|
2014-09-11 18:52:02 +02:00
|
|
|
* @param [in] iPos the position in the expression where the error occured.
|
2014-04-30 07:32:29 +02:00
|
|
|
*/
|
2014-05-05 09:29:14 +02:00
|
|
|
QmuParserError::QmuParserError ( EErrorCodes iErrc, const QString &sTok, const QString &sExpr, int iPos )
|
2014-05-06 11:45:21 +02:00
|
|
|
: QException(), m_sMsg(), m_sExpr ( sExpr ), m_sTok ( sTok ), m_iPos ( iPos ), m_iErrc ( iErrc ),
|
2014-05-01 13:33:40 +02:00
|
|
|
m_ErrMsg ( QmuParserErrorMsg::Instance() )
|
2014-04-30 07:32:29 +02:00
|
|
|
{
|
2014-05-05 09:29:14 +02:00
|
|
|
m_sMsg = m_ErrMsg[m_iErrc];
|
2014-05-30 21:03:17 +02:00
|
|
|
m_sMsg.replace("$POS$", QString().setNum ( m_iPos ));
|
|
|
|
m_sMsg.replace("$TOK$", m_sTok );
|
2014-04-30 07:32:29 +02:00
|
|
|
}
|
|
|
|
|
2014-05-01 13:33:40 +02:00
|
|
|
//---------------------------------------------------------------------------------------------------------------------
|
2014-04-30 07:32:29 +02:00
|
|
|
/**
|
|
|
|
* @brief Construct an error object.
|
2014-09-11 18:52:02 +02:00
|
|
|
* @param [in] a_iErrc the error code.
|
|
|
|
* @param [in] a_iPos the position in the expression where the error occured.
|
2014-04-30 07:32:29 +02:00
|
|
|
* @param [in] sTok The token string related to this error.
|
|
|
|
*/
|
2014-05-05 09:29:14 +02:00
|
|
|
QmuParserError::QmuParserError ( EErrorCodes a_iErrc, int a_iPos, const QString &sTok )
|
2014-05-06 11:45:21 +02:00
|
|
|
: QException(), m_sMsg(), m_sExpr(), m_sTok ( sTok ), m_iPos ( a_iPos ), m_iErrc ( a_iErrc ),
|
2014-05-01 13:33:40 +02:00
|
|
|
m_ErrMsg ( QmuParserErrorMsg::Instance() )
|
2014-04-30 07:32:29 +02:00
|
|
|
{
|
2014-05-05 09:29:14 +02:00
|
|
|
m_sMsg = m_ErrMsg[m_iErrc];
|
2014-05-30 21:03:17 +02:00
|
|
|
m_sMsg.replace("$POS$", QString().setNum ( m_iPos ));
|
|
|
|
m_sMsg.replace("$TOK$", m_sTok );
|
2014-04-30 07:32:29 +02:00
|
|
|
}
|
|
|
|
|
2014-05-01 13:33:40 +02:00
|
|
|
//---------------------------------------------------------------------------------------------------------------------
|
2014-04-30 07:32:29 +02:00
|
|
|
/** @brief Construct an error object.
|
|
|
|
* @param [in] szMsg The error message text.
|
|
|
|
* @param [in] iPos the position related to the error.
|
|
|
|
* @param [in] sTok The token string related to this error.
|
|
|
|
*/
|
|
|
|
QmuParserError::QmuParserError ( const QString &szMsg, int iPos, const QString &sTok )
|
2014-05-06 11:45:21 +02:00
|
|
|
: QException(), m_sMsg ( szMsg ), m_sExpr(), m_sTok ( sTok ), m_iPos ( iPos ), m_iErrc ( ecGENERIC ),
|
2014-05-01 13:33:40 +02:00
|
|
|
m_ErrMsg ( QmuParserErrorMsg::Instance() )
|
2014-04-30 07:32:29 +02:00
|
|
|
{
|
2014-05-30 21:03:17 +02:00
|
|
|
m_sMsg.replace("$POS$", QString().setNum ( m_iPos ));
|
|
|
|
m_sMsg.replace("$TOK$", m_sTok );
|
2014-04-30 07:32:29 +02:00
|
|
|
}
|
|
|
|
|
2014-05-01 13:33:40 +02:00
|
|
|
//---------------------------------------------------------------------------------------------------------------------
|
2014-05-06 16:36:42 +02:00
|
|
|
/**
|
|
|
|
* @brief Copy constructor.
|
|
|
|
*/
|
2014-04-30 07:32:29 +02:00
|
|
|
QmuParserError::QmuParserError ( const QmuParserError &a_Obj )
|
2014-05-06 11:45:21 +02:00
|
|
|
: QException(), m_sMsg ( a_Obj.m_sMsg ), m_sExpr ( a_Obj.m_sExpr ), m_sTok ( a_Obj.m_sTok ),
|
2014-05-01 13:33:40 +02:00
|
|
|
m_iPos ( a_Obj.m_iPos ), m_iErrc ( a_Obj.m_iErrc ), m_ErrMsg ( QmuParserErrorMsg::Instance() )
|
2014-05-05 09:29:14 +02:00
|
|
|
{}
|
2014-04-30 07:32:29 +02:00
|
|
|
|
2014-05-01 13:33:40 +02:00
|
|
|
//---------------------------------------------------------------------------------------------------------------------
|
2014-04-30 07:32:29 +02:00
|
|
|
/** @brief Assignment operator. */
|
|
|
|
QmuParserError& QmuParserError::operator= ( const QmuParserError &a_Obj )
|
|
|
|
{
|
2014-05-01 13:33:40 +02:00
|
|
|
if ( this == &a_Obj )
|
|
|
|
{
|
|
|
|
return *this;
|
|
|
|
}
|
|
|
|
|
2014-05-05 09:29:14 +02:00
|
|
|
m_sMsg = a_Obj.m_sMsg;
|
|
|
|
m_sExpr = a_Obj.m_sExpr;
|
|
|
|
m_sTok = a_Obj.m_sTok;
|
2014-05-01 13:33:40 +02:00
|
|
|
m_iPos = a_Obj.m_iPos;
|
|
|
|
m_iErrc = a_Obj.m_iErrc;
|
|
|
|
return *this;
|
2014-04-30 07:32:29 +02:00
|
|
|
}
|
|
|
|
|
2014-05-01 13:33:40 +02:00
|
|
|
//---------------------------------------------------------------------------------------------------------------------
|
2014-04-30 07:32:29 +02:00
|
|
|
/**
|
|
|
|
* @brief Reset the erro object.
|
|
|
|
*/
|
2014-05-02 10:09:10 +02:00
|
|
|
// cppcheck-suppress unusedFunction
|
2014-04-30 07:32:29 +02:00
|
|
|
void QmuParserError::Reset()
|
|
|
|
{
|
2014-05-05 09:29:14 +02:00
|
|
|
m_sMsg.clear();
|
|
|
|
m_sExpr.clear();
|
|
|
|
m_sTok.clear();
|
2014-05-01 13:33:40 +02:00
|
|
|
m_iPos = -1;
|
|
|
|
m_iErrc = ecUNDEFINED;
|
2014-04-30 07:32:29 +02:00
|
|
|
}
|
|
|
|
|
2014-06-02 09:43:27 +02:00
|
|
|
//---------------------------------------------------------------------------------------------------------------------
|
|
|
|
/**
|
|
|
|
* @brief raise method raise for exception
|
|
|
|
*/
|
2014-06-02 16:28:02 +02:00
|
|
|
Q_NORETURN void QmuParserError::raise() const
|
2014-06-02 09:43:27 +02:00
|
|
|
{
|
|
|
|
throw *this;
|
|
|
|
}
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------------------------------------------------
|
|
|
|
/**
|
|
|
|
* @brief clone clone exception
|
|
|
|
* @return new exception
|
|
|
|
*/
|
2014-06-02 16:28:02 +02:00
|
|
|
QmuParserError *QmuParserError::clone() const
|
2014-06-02 09:43:27 +02:00
|
|
|
{
|
|
|
|
return new QmuParserError(*this);
|
|
|
|
}
|
|
|
|
|
2014-04-30 07:32:29 +02:00
|
|
|
} // namespace qmu
|