mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-10-31 03:56:39 +00:00 
			
		
		
		
	Mostly to avoid string literal lookup by index with iteration over all preciding literals and calling strlen. This is very inefficient. In genral this makes code much more straightforward but also makes it portable since now int and float of different sizes are properly supported.
		
			
				
	
	
		
			41 lines
		
	
	
	
		
			761 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
	
		
			761 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| #include "literals.hpp"
 | |
| 
 | |
| #include <algorithm>
 | |
| #include <cstring>
 | |
| 
 | |
| namespace Compiler
 | |
| {
 | |
|     int Literals::addInteger(Interpreter::Type_Integer value)
 | |
|     {
 | |
|         int index = static_cast<int>(mIntegers.size());
 | |
| 
 | |
|         mIntegers.push_back(value);
 | |
| 
 | |
|         return index;
 | |
|     }
 | |
| 
 | |
|     int Literals::addFloat(Interpreter::Type_Float value)
 | |
|     {
 | |
|         int index = static_cast<int>(mFloats.size());
 | |
| 
 | |
|         mFloats.push_back(value);
 | |
| 
 | |
|         return index;
 | |
|     }
 | |
| 
 | |
|     int Literals::addString(const std::string& value)
 | |
|     {
 | |
|         int index = static_cast<int>(mStrings.size());
 | |
| 
 | |
|         mStrings.push_back(value);
 | |
| 
 | |
|         return index;
 | |
|     }
 | |
| 
 | |
|     void Literals::clear()
 | |
|     {
 | |
|         mIntegers.clear();
 | |
|         mFloats.clear();
 | |
|         mStrings.clear();
 | |
|     }
 | |
| }
 |