1 /* 2 AngelCode Scripting Library 3 Copyright (c) 2003-2012 Andreas Jonsson 4 5 This software is provided 'as-is', without any express or implied 6 warranty. In no event will the authors be held liable for any 7 damages arising from the use of this software. 8 9 Permission is granted to anyone to use this software for any 10 purpose, including commercial applications, and to alter it and 11 redistribute it freely, subject to the following restrictions: 12 13 1. The origin of this software must not be misrepresented; you 14 must not claim that you wrote the original software. If you use 15 this software in a product, an acknowledgment in the product 16 documentation would be appreciated but is not required. 17 18 2. Altered source versions must be plainly marked as such, and 19 must not be misrepresented as being the original software. 20 21 3. This notice may not be removed or altered from any source 22 distribution. 23 24 The original version of this library can be located at: 25 http://www.angelcode.com/angelscript/ 26 27 Andreas Jonsson 28 andreas@angelcode.com 29 */ 30 31 32 // 33 // as_variablescope.h 34 // 35 // A manager class for variable declarations 36 // 37 38 39 #ifndef AS_VARIABLESCOPE_H 40 #define AS_VARIABLESCOPE_H 41 42 #include "as_config.h" 43 44 #ifndef AS_NO_COMPILER 45 46 #include "as_array.h" 47 #include "as_string.h" 48 #include "as_datatype.h" 49 50 BEGIN_AS_NAMESPACE 51 52 struct sVariable 53 { 54 asCString name; 55 asCDataType type; 56 int stackOffset; 57 bool isInitialized; 58 bool isPureConstant; 59 asQWORD constantValue; 60 bool onHeap; 61 }; 62 63 class asCVariableScope 64 { 65 public: 66 asCVariableScope(asCVariableScope *parent); 67 ~asCVariableScope(); 68 69 void Reset(); 70 71 int DeclareVariable(const char *name, const asCDataType &type, int stackOffset, bool isObjectOnHeap); 72 sVariable *GetVariable(const char *name); 73 sVariable *GetVariableByOffset(int offset); 74 75 asCVariableScope *parent; 76 77 bool isBreakScope; 78 bool isContinueScope; 79 80 asCArray<sVariable *> variables; 81 }; 82 83 END_AS_NAMESPACE 84 85 #endif // AS_NO_COMPILER 86 87 #endif 88