colobot/src/CBot/CBotEnums.h

280 lines
8.8 KiB
C++
Raw Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

/*
* This file is part of the Colobot: Gold Edition source code
* Copyright (C) 2001-2018, 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
/**
* \file CBotEnums.h
* \brief Some enum values used across the CBot engine
*/
namespace CBot
{
/**
* \brief Defines known types. This types are modeled on Java types.
*
* Do not change the order of elements.
*/
enum CBotType
{
CBotTypVoid = 0, //!< void
CBotTypByte = 1, //!< byte
CBotTypShort = 2, //!< short
CBotTypChar = 3, //!< char
CBotTypInt = 4, //!< int
CBotTypLong = 5, //!< long
CBotTypFloat = 6, //!< float
CBotTypDouble = 7, //!< double
CBotTypBoolean = 8, //!< bool
CBotTypString = 9, //!< string
CBotTypArrayPointer = 10, //!< Pointer to an array (::CBotTypArrayBody)
CBotTypArrayBody = 11, //!< Array
CBotTypPointer = 12, //!< Pointer to a class (::CBotTypClass or ::CBotTypIntrinsic)
CBotTypNullPointer = 13, //!< Null pointer
CBotTypClass = 15, //!< Class instance
CBotTypIntrinsic = 16, //!< Intrinsic class instance
CBotTypMAX = 20
};
/**
* \brief Different modes for CBotProgram::GetPosition
*/
enum CBotGet
{
GetPosExtern = 1,
GetPosNom = 2,
GetPosParam = 3,
GetPosBloc = 4
};
/**
* \brief This enum contains possible token types
*/
enum TokenId
{
TokenKeyWord = 2000, //!< keywords
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_BYTE,
ID_SHORT,
ID_CHAR,
ID_LONG,
ID_DOUBLE,
TokenKeyVal = 2200, //!< keywords that represent values (true, false, null, nan)
ID_TRUE = 2200,
ID_FALSE,
ID_NULL,
ID_NAN,
TokenKeyOp = 2300, //!< operators
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
};
/**
* \brief Types of tokens
*/
enum TokenType
{
TokenTypNone = 0,
TokenTypKeyWord = 1, //!< keyword of the language (see TokenKeyWord)
TokenTypNum = 2, //!< number
TokenTypString = 3, //!< string
TokenTypVar = 4, //!< a variable name
TokenTypDef = 5, //!< value according DefineNum
TokenTypChar = 6, //!< character literal
};
/**
* \brief This enum contains possible CBot error values. Values in range 5000-5999 are compile errors, 6000-6999 are runtime errors
*
* Note that other values may be returned, for example exceptions for user-defined builtin functions, or "throw" instruction
*
* Also note that these can't overlap with CBotType, see CBotTypResult for explanation
*/
enum CBotError : int
{
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"
CBotErrNoExpression = 5043, //!< expression expected after =
CBotErrAmbiguousCall = 5044, //!< ambiguous call to overloaded function
CBotErrFuncNotVoid = 5045, //!< function needs return type "void"
CBotErrNoClassName = 5046, //!< class name expected
CBotErrNoReturn = 5047, //!< non-void function needs "return;"
CBotErrDefaultValue = 5048, //!< this parameter needs a default value
CBotErrEndQuote = 5049, //!< missing end quote
CBotErrBadEscape = 5050, //!< unknown escape sequence
CBotErrOctalRange = 5051, //!< octal value out of range
CBotErrHexDigits = 5052, //!< missing hex digits after escape sequence
CBotErrHexRange = 5053, //!< hex value out of range
CBotErrUnicodeName = 5054, //!< invalid universal character name
CBotErrCharEmpty = 5055, //!< empty character constant
// 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
CBotErrMAX, //!< Max errors
};
} // namespace CBot