mirror of
				https://github.com/TES3MP/openmw-tes3mp.git
				synced 2025-11-04 14:26:44 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			73 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#include "output.hpp"
 | 
						|
 | 
						|
#include <cassert>
 | 
						|
#include <algorithm>
 | 
						|
#include <iterator>
 | 
						|
 | 
						|
#include "locals.hpp"
 | 
						|
 | 
						|
namespace Compiler
 | 
						|
{
 | 
						|
    Output::Output (Locals& locals) : mLocals (locals) {}
 | 
						|
 | 
						|
    void Output::getCode (std::vector<Interpreter::Type_Code>& code) const
 | 
						|
    {
 | 
						|
        code.clear();
 | 
						|
        
 | 
						|
        // header
 | 
						|
        code.push_back (static_cast<Interpreter::Type_Code> (mCode.size()));
 | 
						|
        
 | 
						|
        assert (mLiterals.getIntegerSize()%4==0);
 | 
						|
        code.push_back (static_cast<Interpreter::Type_Code> (mLiterals.getIntegerSize()/4));
 | 
						|
        
 | 
						|
        assert (mLiterals.getFloatSize()%4==0);
 | 
						|
        code.push_back (static_cast<Interpreter::Type_Code> (mLiterals.getFloatSize()/4));
 | 
						|
        
 | 
						|
        assert (mLiterals.getStringSize()%4==0);
 | 
						|
        code.push_back (static_cast<Interpreter::Type_Code> (mLiterals.getStringSize()/4));
 | 
						|
        
 | 
						|
        // code
 | 
						|
        std::copy (mCode.begin(), mCode.end(), std::back_inserter (code));
 | 
						|
        
 | 
						|
        // literals
 | 
						|
        mLiterals.append (code);
 | 
						|
    }
 | 
						|
 | 
						|
    const Literals& Output::getLiterals() const
 | 
						|
    {
 | 
						|
        return mLiterals;
 | 
						|
    }
 | 
						|
            
 | 
						|
    const std::vector<Interpreter::Type_Code>& Output::getCode() const
 | 
						|
    {
 | 
						|
        return mCode;
 | 
						|
    }
 | 
						|
            
 | 
						|
    const Locals& Output::getLocals() const
 | 
						|
    {
 | 
						|
        return mLocals;
 | 
						|
    }
 | 
						|
 | 
						|
    Literals& Output::getLiterals()
 | 
						|
    {
 | 
						|
        return mLiterals;
 | 
						|
    }
 | 
						|
    
 | 
						|
    std::vector<Interpreter::Type_Code>& Output::getCode()
 | 
						|
    {
 | 
						|
        return mCode;
 | 
						|
    }
 | 
						|
    
 | 
						|
    Locals& Output::getLocals()
 | 
						|
    {
 | 
						|
        return mLocals;
 | 
						|
    }
 | 
						|
    
 | 
						|
    void Output::clear()
 | 
						|
    {
 | 
						|
        mLiterals.clear();
 | 
						|
        mCode.clear();
 | 
						|
        mLocals.clear();
 | 
						|
    }
 | 
						|
}
 | 
						|
 |