[colobot] 164/377: Made CBot errors an enum
Didier Raboud
odyx at moszumanska.debian.org
Wed Mar 30 13:34:11 UTC 2016
This is an automated email from the git hooks/post-receive script.
odyx pushed a commit to branch debian/master
in repository colobot.
commit 73f8bd5490adeb215320c943cb1036aad665f491
Author: krzys-h <krzys_h at interia.pl>
Date: Sun Dec 20 19:16:01 2015 +0100
Made CBot errors an enum
---
src/CBot/CBotCStack.cpp | 16 +++----
src/CBot/CBotCStack.h | 12 ++---
src/CBot/CBotCall.cpp | 2 +-
src/CBot/CBotCallMethode.cpp | 2 +-
src/CBot/CBotDefines.h | 77 -------------------------------
src/CBot/CBotEnums.h | 81 +++++++++++++++++++++++++++++++++
src/CBot/CBotInstr/CBotClassInst.cpp | 2 +-
src/CBot/CBotInstr/CBotExprVar.cpp | 2 +-
src/CBot/CBotInstr/CBotExpression.cpp | 5 +-
src/CBot/CBotInstr/CBotInstrCall.cpp | 2 +-
src/CBot/CBotInstr/CBotInstrMethode.cpp | 4 +-
src/CBot/CBotInstr/CBotNew.cpp | 2 +-
12 files changed, 106 insertions(+), 101 deletions(-)
diff --git a/src/CBot/CBotCStack.cpp b/src/CBot/CBotCStack.cpp
index 6d8b027..47a701b 100644
--- a/src/CBot/CBotCStack.cpp
+++ b/src/CBot/CBotCStack.cpp
@@ -36,7 +36,7 @@
////////////////////////////////////////////////////////////////////////////////
CBotProgram* CBotCStack::m_prog = nullptr; // init the static variable
-int CBotCStack::m_error = 0;
+CBotError CBotCStack::m_error = CBotNoErr;
int CBotCStack::m_end = 0;
CBotTypResult CBotCStack::m_retTyp = CBotTypResult(0);
@@ -48,7 +48,7 @@ CBotCStack::CBotCStack(CBotCStack* ppapa)
if (ppapa == nullptr)
{
- m_error = 0;
+ m_error = CBotNoErr;
m_start = 0;
m_end = 0;
m_bBlock = true;
@@ -124,7 +124,7 @@ CBotFunction* CBotCStack::ReturnFunc(CBotFunction* inst, CBotCStack* pfils)
}
////////////////////////////////////////////////////////////////////////////////
-int CBotCStack::GetError(int& start, int& end)
+CBotError CBotCStack::GetError(int& start, int& end)
{
start = m_start;
end = m_end;
@@ -132,7 +132,7 @@ int CBotCStack::GetError(int& start, int& end)
}
////////////////////////////////////////////////////////////////////////////////
-int CBotCStack::GetError()
+CBotError CBotCStack::GetError()
{
return m_error;
}
@@ -225,7 +225,7 @@ void CBotCStack::SetStartError( int pos )
}
////////////////////////////////////////////////////////////////////////////////
-void CBotCStack::SetError(int n, int pos)
+void CBotCStack::SetError(CBotError n, int pos)
{
if ( n!= 0 && m_error != 0) return; // does not change existing error
m_error = n;
@@ -233,7 +233,7 @@ void CBotCStack::SetError(int n, int pos)
}
////////////////////////////////////////////////////////////////////////////////
-void CBotCStack::SetError(int n, CBotToken* p)
+void CBotCStack::SetError(CBotError n, CBotToken* p)
{
if (m_error) return; // does not change existing error
m_error = n;
@@ -242,7 +242,7 @@ void CBotCStack::SetError(int n, CBotToken* p)
}
////////////////////////////////////////////////////////////////////////////////
-void CBotCStack::ResetError(int n, int start, int end)
+void CBotCStack::ResetError(CBotError n, int start, int end)
{
m_error = n;
m_start = start;
@@ -362,7 +362,7 @@ CBotTypResult CBotCStack::CompileCall(CBotToken* &p, CBotVar** ppVars, long& nId
if ( val.GetType() < 0 )
{
// pVar = nullptr; // the error is not on a particular parameter
- SetError( -val.GetType(), p );
+ SetError( static_cast<CBotError>(-val.GetType()), p );
val.SetType(-val.GetType());
return val;
}
diff --git a/src/CBot/CBotCStack.h b/src/CBot/CBotCStack.h
index 1bdfa90..ff18378 100644
--- a/src/CBot/CBotCStack.h
+++ b/src/CBot/CBotCStack.h
@@ -57,7 +57,7 @@ public:
* \brief GetError
* \return
*/
- int GetError();
+ CBotError GetError();
/*!
* \brief GetError Gives error number
@@ -65,7 +65,7 @@ public:
* \param end
* \return
*/
- int GetError(int& start, int& end);
+ CBotError GetError(int& start, int& end);
/*!
* \brief SetType Set the type of instruction on the stack.
@@ -183,14 +183,14 @@ public:
* \param n
* \param pos
*/
- void SetError(int n, int pos);
+ void SetError(CBotError n, int pos);
/*!
* \brief SetError
* \param n
* \param p
*/
- void SetError(int n, CBotToken* p);
+ void SetError(CBotError n, CBotToken* p);
/*!
* \brief ResetError
@@ -198,7 +198,7 @@ public:
* \param start
* \param end
*/
- void ResetError(int n, int start, int end);
+ void ResetError(CBotError n, int start, int end);
/*!
* \brief SetRetType
@@ -252,7 +252,7 @@ private:
CBotCStack* m_next;
CBotCStack* m_prev;
- static int m_error;
+ static CBotError m_error;
static int m_end;
int m_start;
diff --git a/src/CBot/CBotCall.cpp b/src/CBot/CBotCall.cpp
index 8f4cfe5..17871ab 100644
--- a/src/CBot/CBotCall.cpp
+++ b/src/CBot/CBotCall.cpp
@@ -118,7 +118,7 @@ CBotTypResult CBotCall::CompileCall(CBotToken* &p, CBotVar** ppVar, CBotCStack*
if ( ret > 20 )
{
- if (pVar2) pStack->SetError(ret, p /*pVar2->GetToken()*/ );
+ if (pVar2) pStack->SetError(static_cast<CBotError>(ret), p /*pVar2->GetToken()*/ );
}
delete pVar;
nIdent = pt->m_nFuncIdent;
diff --git a/src/CBot/CBotCallMethode.cpp b/src/CBot/CBotCallMethode.cpp
index b3512f6..0bc8184 100644
--- a/src/CBot/CBotCallMethode.cpp
+++ b/src/CBot/CBotCallMethode.cpp
@@ -70,7 +70,7 @@ CBotTypResult CBotCallMethode::CompileCall(const std::string& name,
int ret = r.GetType();
if ( ret > 20 )
{
- if (pVar2) pStack->SetError(ret, pVar2->GetToken());
+ if (pVar2) pStack->SetError(static_cast<CBotError>(ret), pVar2->GetToken());
}
delete pVar;
nIdent = pt->m_nFuncIdent;
diff --git a/src/CBot/CBotDefines.h b/src/CBot/CBotDefines.h
index 09b11e5..f2ede5a 100644
--- a/src/CBot/CBotDefines.h
+++ b/src/CBot/CBotDefines.h
@@ -47,80 +47,3 @@
#define OBJECTDELETED (reinterpret_cast<void*>(-1))
// value set before initialization
#define OBJECTCREATED (reinterpret_cast<void*>(-2))
-
-
-////////////////////////////////////////////////////////////////////////
-// Error Handling of compilation and execution
-////////////////////////////////////////////////////////////////////////
-
-// TODO: Why are all of those duplicated? This needs to be unified across the source code ~krzys_h
-
-// Compile errors
-#define CBotErrOpenPar 5000 // missing the opening parenthesis
-#define CBotErrClosePar 5001 // missing the closing parenthesis
-#define CBotErrNotBoolean 5002 // expression must be a boolean
-#define CBotErrUndefVar 5003 // undeclared variable
-#define CBotErrBadLeft 5004 // assignment impossible ( 5 = ... )
-#define CBotErrNoTerminator 5005 // semicolon expected
-#define CBotErrCaseOut 5006 // case outside a switch
-#define CBotErrNoEnd 5007 // instructions after final closing brace
-#define CBotErrCloseBlock 5008 // missing " } "
-#define CBotErrElseWhitoutIf 5009 // else without matching if
-#define CBotErrOpenBlock 5010 // missing " { "
-#define CBotErrBadType1 5011 // wrong type for the assignment
-#define CBotErrRedefVar 5012 // redefinition of the variable
-#define CBotErrBadType2 5013 // Two operands are incompatible
-#define CBotErrUndefCall 5014 // routine undefined
-#define CBotErrNoDoubleDots 5015 // " : " expected
-#define CBotErrNoWhile 5016 // "while" expected (in do..while)
-#define CBotErrBreakOutside 5017 // break outside of a loop
-#define CBotErrUndefLabel 5019 // label udnefined
-#define CBotErrLabel 5018 // label ne peut se mettre ici (label can not get here)
-#define CBotErrNoCase 5020 // missing " case "
-#define CBotErrBadNum 5021 // expected number
-#define CBotErrVoid 5022 // " void " not possible here
-#define CBotErrNoType 5023 // type declaration expected
-#define CBotErrNoVar 5024 // variable name expected
-#define CBotErrNoFunc 5025 // expected function name
-#define CBotErrOverParam 5026 // too many parameters
-#define CBotErrRedefFunc 5027 // this function already exists
-#define CBotErrLowParam 5028 // not enough parameters
-#define CBotErrBadParam 5029 // wrong types of parameters
-#define CBotErrNbParam 5030 // wrong number of parameters
-#define CBotErrUndefItem 5031 // element does not exist in the class
-#define CBotErrUndefClass 5032 // variable is not a class
-#define CBotErrNoConstruct 5033 // no appropriate constructor
-#define CBotErrRedefClass 5034 // class already exists
-#define CBotErrCloseIndex 5035 // " ] " expected
-#define CBotErrReserved 5036 // reserved word (for a DefineNum)
-#define CBotErrBadNew 5037 // wrong setting for new
-#define CBotErrOpenIndex 5038 // " [ " expected
-#define CBotErrBadString 5039 // expected string
-#define CBotErrBadIndex 5040 // wrong index type "[ false ]"
-#define CBotErrPrivate 5041 // protected item
-#define CBotErrNoPublic 5042 // missing word "public"
-
-// Runtime errors
-#define CBotErrZeroDiv 6000 // division by zero
-#define CBotErrNotInit 6001 // uninitialized variable
-#define CBotErrBadThrow 6002 // throw a negative value
-#define CBotErrNoRetVal 6003 // function did not return results
-#define CBotErrNoRun 6004 // Run() without active function
-#define CBotErrUndefFunc 6005 // calling a function that no longer exists
-#define CBotErrNotClass 6006 // this class does not exist
-#define CBotErrNull 6007 // null pointer
-#define CBotErrNan 6008 // calculation with a NAN
-#define CBotErrOutArray 6009 // index out of array
-#define CBotErrStackOver 6010 // stack overflow
-#define CBotErrDeletedPtr 6011 // pointer to an object destroyed
-#define CBotErrFileOpen 6012 // cannot open the file
-#define CBotErrNotOpen 6013 // channel not open
-#define CBotErrRead 6014 // error while reading
-#define CBotErrWrite 6015 // writing error
-
-// Max errors
-#define TX_MAX 6016
-
-// other values may be returned
-// for example exceptions returned by external routines
-// and " throw " with any number.
diff --git a/src/CBot/CBotEnums.h b/src/CBot/CBotEnums.h
index 0db5aff..6696516 100644
--- a/src/CBot/CBotEnums.h
+++ b/src/CBot/CBotEnums.h
@@ -153,3 +153,84 @@ enum EID
TX_UNDEF = 4000,
TX_NAN
};
+
+////////////////////////////////////////////////////////////////////////
+// Error Handling of compilation and execution
+////////////////////////////////////////////////////////////////////////
+
+// NOTE: These CANNOT overlap with CBotType
+
+enum CBotError
+{
+ CBotNoErr = 0,
+
+ // Compile errors
+ CBotErrOpenPar = 5000, //!< missing the opening parenthesis
+ CBotErrClosePar = 5001, //!< missing the closing parenthesis
+ CBotErrNotBoolean = 5002, //!< expression must be a boolean
+ CBotErrUndefVar = 5003, //!< undeclared variable
+ CBotErrBadLeft = 5004, //!< assignment impossible ( 5 = ... )
+ CBotErrNoTerminator = 5005, //!< semicolon expected
+ CBotErrCaseOut = 5006, //!< case outside a switch
+ CBotErrNoEnd = 5007, //!< instructions after final closing brace
+ CBotErrCloseBlock = 5008, //!< missing " } "
+ CBotErrElseWhitoutIf = 5009, //!< else without matching if
+ CBotErrOpenBlock = 5010, //!< missing " { "
+ CBotErrBadType1 = 5011, //!< wrong type for the assignment
+ CBotErrRedefVar = 5012, //!< redefinition of the variable
+ CBotErrBadType2 = 5013, //!< Two operands are incompatible
+ CBotErrUndefCall = 5014, //!< routine undefined
+ CBotErrNoDoubleDots = 5015, //!< " : " expected
+ CBotErrNoWhile = 5016, //!< "while" expected (in do..while)
+ CBotErrBreakOutside = 5017, //!< break outside of a loop
+ CBotErrUndefLabel = 5019, //!< label udnefined
+ CBotErrLabel = 5018, //!< label ne peut se mettre ici (label can not get here)
+ CBotErrNoCase = 5020, //!< missing " case "
+ CBotErrBadNum = 5021, //!< expected number
+ CBotErrVoid = 5022, //!< " void " not possible here
+ CBotErrNoType = 5023, //!< type declaration expected
+ CBotErrNoVar = 5024, //!< variable name expected
+ CBotErrNoFunc = 5025, //!< expected function name
+ CBotErrOverParam = 5026, //!< too many parameters
+ CBotErrRedefFunc = 5027, //!< this function already exists
+ CBotErrLowParam = 5028, //!< not enough parameters
+ CBotErrBadParam = 5029, //!< wrong types of parameters
+ CBotErrNbParam = 5030, //!< wrong number of parameters
+ CBotErrUndefItem = 5031, //!< element does not exist in the class
+ CBotErrUndefClass = 5032, //!< variable is not a class
+ CBotErrNoConstruct = 5033, //!< no appropriate constructor
+ CBotErrRedefClass = 5034, //!< class already exists
+ CBotErrCloseIndex = 5035, //!< " ] " expected
+ CBotErrReserved = 5036, //!< reserved word (for a DefineNum)
+ CBotErrBadNew = 5037, //!< wrong setting for new
+ CBotErrOpenIndex = 5038, //!< " [ " expected
+ CBotErrBadString = 5039, //!< expected string
+ CBotErrBadIndex = 5040, //!< wrong index type "[ false ]"
+ CBotErrPrivate = 5041, //!< protected item
+ CBotErrNoPublic = 5042, //!< missing word "public"
+
+ // Runtime errors
+ CBotErrZeroDiv = 6000, //!< division by zero
+ CBotErrNotInit = 6001, //!< uninitialized variable
+ CBotErrBadThrow = 6002, //!< throw a negative value
+ CBotErrNoRetVal = 6003, //!< function did not return results
+ CBotErrNoRun = 6004, //!< Run() without active function
+ CBotErrUndefFunc = 6005, //!< calling a function that no longer exists
+ CBotErrNotClass = 6006, //!< this class does not exist
+ CBotErrNull = 6007, //!< null pointer
+ CBotErrNan = 6008, //!< calculation with a NAN
+ CBotErrOutArray = 6009, //!< index out of array
+ CBotErrStackOver = 6010, //!< stack overflow
+ CBotErrDeletedPtr = 6011, //!< pointer to an object destroyed
+ CBotErrFileOpen = 6012, //!< cannot open the file
+ CBotErrNotOpen = 6013, //!< channel not open
+ CBotErrRead = 6014, //!< error while reading
+ CBotErrWrite = 6015, //!< writing error
+
+ // Max errors
+ TX_MAX,
+
+ // other values may be returned
+ // for example exceptions returned by external routines
+ // and " throw " with any number.
+};
diff --git a/src/CBot/CBotInstr/CBotClassInst.cpp b/src/CBot/CBotInstr/CBotClassInst.cpp
index 2570053..04650e3 100644
--- a/src/CBot/CBotInstr/CBotClassInst.cpp
+++ b/src/CBot/CBotInstr/CBotClassInst.cpp
@@ -155,7 +155,7 @@ CBotInstr* CBotClassInst::Compile(CBotToken* &p, CBotCStack* pStack, CBotClass*
if (typ>20)
{
- pStk->SetError(typ, vartoken->GetEnd());
+ pStk->SetError(static_cast<CBotError>(typ), vartoken->GetEnd());
goto error;
}
diff --git a/src/CBot/CBotInstr/CBotExprVar.cpp b/src/CBot/CBotInstr/CBotExprVar.cpp
index d956d43..7f2d14a 100644
--- a/src/CBot/CBotInstr/CBotExprVar.cpp
+++ b/src/CBot/CBotInstr/CBotExprVar.cpp
@@ -213,7 +213,7 @@ CBotInstr* CBotExprVar::CompileMethode(CBotToken* &p, CBotCStack* pStack)
p = pp; // previous instruction
return pStack->Return(inst, pStk);
}
- pStk->SetError(0,0); // the error is not adressed here
+ pStk->SetError(CBotNoErr, 0); // the error is not adressed here
}
}
delete inst;
diff --git a/src/CBot/CBotInstr/CBotExpression.cpp b/src/CBot/CBotInstr/CBotExpression.cpp
index b277fb4..afc8607 100644
--- a/src/CBot/CBotInstr/CBotExpression.cpp
+++ b/src/CBot/CBotInstr/CBotExpression.cpp
@@ -142,10 +142,11 @@ CBotInstr* CBotExpression::Compile(CBotToken* &p, CBotCStack* pStack)
}
delete inst;
- int start, end, error = pStack->GetError(start, end);
+ int start, end;
+ CBotError error = pStack->GetError(start, end);
p = pp; // returns to the top
- pStack->SetError(0,0); // forget the error
+ pStack->SetError(CBotNoErr,0); // forget the error
CBotInstr* i = CBotTwoOpExpr::Compile(p, pStack); // tries without assignment
if (i != nullptr && error == CBotErrPrivate && p->GetType() == ID_ASS)
diff --git a/src/CBot/CBotInstr/CBotInstrCall.cpp b/src/CBot/CBotInstr/CBotInstrCall.cpp
index f7ef7cb..3ba666d 100644
--- a/src/CBot/CBotInstr/CBotInstrCall.cpp
+++ b/src/CBot/CBotInstr/CBotInstrCall.cpp
@@ -111,7 +111,7 @@ CBotInstr* CBotInstrCall::Compile(CBotToken* &p, CBotCStack* pStack)
if ( inst->m_typRes.GetType() >= 20 )
{
// if (pVar2!=nullptr) pp = pVar2->RetToken();
- pStack->SetError( inst->m_typRes.GetType(), pp );
+ pStack->SetError( static_cast<CBotError>(inst->m_typRes.GetType()), pp );
delete pStack->TokenStack();
delete inst;
return nullptr;
diff --git a/src/CBot/CBotInstr/CBotInstrMethode.cpp b/src/CBot/CBotInstr/CBotInstrMethode.cpp
index 5a167c8..f5800c1 100644
--- a/src/CBot/CBotInstr/CBotInstrMethode.cpp
+++ b/src/CBot/CBotInstr/CBotInstrMethode.cpp
@@ -77,7 +77,7 @@ CBotInstr* CBotInstrMethode::Compile(CBotToken* &p, CBotCStack* pStack, CBotVar*
if (inst->m_typRes.GetType() > 20)
{
- pStack->SetError(inst->m_typRes.GetType(), pp);
+ pStack->SetError(static_cast<CBotError>(inst->m_typRes.GetType()), pp);
delete inst;
return nullptr;
}
@@ -97,7 +97,7 @@ CBotInstr* CBotInstrMethode::Compile(CBotToken* &p, CBotCStack* pStack, CBotVar*
return nullptr;
}
}
- pStack->SetError(1234, p);
+ pStack->SetError(static_cast<CBotError>(1234), p); // TODO: seriously? ~krzys_h
delete inst;
return nullptr;
}
diff --git a/src/CBot/CBotInstr/CBotNew.cpp b/src/CBot/CBotInstr/CBotNew.cpp
index 2baf7a6..27237ed 100644
--- a/src/CBot/CBotInstr/CBotNew.cpp
+++ b/src/CBot/CBotInstr/CBotNew.cpp
@@ -92,7 +92,7 @@ CBotInstr* CBotNew::Compile(CBotToken* &p, CBotCStack* pStack)
if (typ>20)
{
- pStk->SetError(typ, inst->m_vartoken.GetEnd());
+ pStk->SetError(static_cast<CBotError>(typ), inst->m_vartoken.GetEnd());
goto error;
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/colobot.git
More information about the Pkg-games-commits
mailing list