forked from teamnwah/openmw-tes3coop
		
	
		
			
				
	
	
		
			63 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#ifndef INTERPRETER_INTERPRETER_H_INCLUDED
 | 
						|
#define INTERPRETER_INTERPRETER_H_INCLUDED
 | 
						|
 | 
						|
#include <map>
 | 
						|
 | 
						|
#include "runtime.hpp"
 | 
						|
#include "types.hpp"
 | 
						|
 | 
						|
namespace Interpreter
 | 
						|
{
 | 
						|
    class Opcode0;
 | 
						|
    class Opcode1;
 | 
						|
    class Opcode2;
 | 
						|
 | 
						|
    class Interpreter
 | 
						|
    {
 | 
						|
            Runtime mRuntime;
 | 
						|
            std::map<int, Opcode1 *> mSegment0;
 | 
						|
            std::map<int, Opcode2 *> mSegment1;
 | 
						|
            std::map<int, Opcode1 *> mSegment2;
 | 
						|
            std::map<int, Opcode1 *> mSegment3;
 | 
						|
            std::map<int, Opcode2 *> mSegment4;
 | 
						|
            std::map<int, Opcode0 *> mSegment5;
 | 
						|
 | 
						|
            // not implemented
 | 
						|
            Interpreter (const Interpreter&);
 | 
						|
            Interpreter& operator= (const Interpreter&);
 | 
						|
 | 
						|
            void execute (Type_Code code);
 | 
						|
 | 
						|
            void abortUnknownCode (int segment, int opcode);
 | 
						|
 | 
						|
            void abortUnknownSegment (Type_Code code);
 | 
						|
 | 
						|
        public:
 | 
						|
 | 
						|
            Interpreter();
 | 
						|
 | 
						|
            ~Interpreter();
 | 
						|
 | 
						|
            void installSegment0 (int code, Opcode1 *opcode);
 | 
						|
            ///< ownership of \a opcode is transferred to *this.
 | 
						|
 | 
						|
            void installSegment1 (int code, Opcode2 *opcode);
 | 
						|
            ///< ownership of \a opcode is transferred to *this.
 | 
						|
 | 
						|
            void installSegment2 (int code, Opcode1 *opcode);
 | 
						|
            ///< ownership of \a opcode is transferred to *this.
 | 
						|
 | 
						|
            void installSegment3 (int code, Opcode1 *opcode);
 | 
						|
            ///< ownership of \a opcode is transferred to *this.
 | 
						|
 | 
						|
            void installSegment4 (int code, Opcode2 *opcode);
 | 
						|
            ///< ownership of \a opcode is transferred to *this.
 | 
						|
 | 
						|
            void installSegment5 (int code, Opcode0 *opcode);
 | 
						|
            ///< ownership of \a opcode is transferred to *this.
 | 
						|
 | 
						|
            void run (const Type_Code *code, int codeSize, Context& context);
 | 
						|
    };
 | 
						|
}
 | 
						|
 | 
						|
#endif
 |