colobot/src/CBot/CBotEnums.h

237 lines
7.2 KiB
C
Raw Normal View History

/*
* This file is part of the Colobot: Gold Edition source code
* Copyright (C) 2001-2015, Daniel Roux, EPSITEC SA & TerranovaTeam
* http://epsitec.ch; http://colobot.info; http://github.com/colobot
*
* This program 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.
*
* This program 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://gnu.org/licenses
*/
#pragma once
// Modules inlcude
// Local include
// Global include
/*! \brief CBotType Defines known types. This types are modeled on Java types.
* Do not change the order of elements
*/
enum CBotType
{
CBotTypVoid = 0,
CBotTypByte = 1, //n
CBotTypShort = 2, //n
CBotTypChar = 3, //n
CBotTypInt = 4,
CBotTypLong = 5, //n
CBotTypFloat = 6,
CBotTypDouble = 7, //n
CBotTypBoolean = 8,
CBotTypString = 9,
CBotTypArrayPointer = 10, // array of variables
CBotTypArrayBody = 11, // same but creates an instance
CBotTypPointer = 12, // pointer to an instance
CBotTypNullPointer = 13, // null pointer is special
CBotTypClass = 15,
CBotTypIntrinsic = 16 // instance of a class intrinsic
};
//n = not implemented yet
//! \brief CBotGet Different modes for GetPosition.
enum CBotGet
{
GetPosExtern = 1,
GetPosNom = 2,
GetPosParam = 3,
GetPosBloc = 4
};
enum EID
{
ID_IF = 2000,
ID_ELSE,
ID_WHILE,
ID_DO,
ID_FOR,
ID_BREAK,
ID_CONTINUE,
ID_SWITCH,
ID_CASE,
ID_DEFAULT,
ID_TRY,
ID_THROW,
ID_CATCH,
ID_FINALLY,
ID_TXT_AND,
ID_TXT_OR,
ID_TXT_NOT,
ID_RETURN,
ID_CLASS,
ID_EXTENDS,
ID_SYNCHO,
ID_NEW,
ID_PUBLIC,
ID_EXTERN,
ID_STATIC,
ID_PROTECTED,
ID_PRIVATE,
ID_INT,
ID_FLOAT,
ID_BOOLEAN,
ID_STRING,
ID_VOID,
ID_BOOL,
ID_TRUE = 2200,
ID_FALSE,
ID_NULL,
ID_NAN,
ID_OPENPAR = 2300,
ID_CLOSEPAR,
ID_OPBLK,
ID_CLBLK,
ID_SEP,
ID_COMMA,
ID_DOTS,
ID_DOT,
ID_OPBRK,
ID_CLBRK,
ID_DBLDOTS,
ID_LOGIC,
ID_ADD,
ID_SUB,
ID_MUL,
ID_DIV,
ID_ASS,
ID_ASSADD,
ID_ASSSUB,
ID_ASSMUL,
ID_ASSDIV,
ID_ASSOR,
ID_ASSAND,
ID_ASSXOR,
ID_ASSSL,
ID_ASSSR,
ID_ASSASR,
ID_SL,
ID_SR,
ID_ASR,
ID_INC,
ID_DEC,
ID_LO,
ID_HI,
ID_LS,
ID_HS,
ID_EQ,
ID_NE,
ID_AND,
ID_XOR,
ID_OR,
ID_LOG_AND,
ID_LOG_OR,
ID_LOG_NOT,
ID_NOT,
ID_MODULO,
ID_POWER,
ID_ASSMODULO,
TX_UNDEF = 4000,
TX_NAN
};
2015-12-20 18:16:01 +00:00
////////////////////////////////////////////////////////////////////////
// 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.
};