Google
Web alhem.net

CodeTool.h

Go to the documentation of this file.
00001 #ifndef _CODETOOL_H
00002 #define _CODETOOL_H
00003 
00004 #include <string>
00005 #include <map>
00006 #include "RobotXMLFile.h"
00007 
00008 class Robot;
00009 
00010 
00011 typedef std::vector<long> stack_v;
00012 
00013 
00014 class CodeTool
00015 {
00016 public:
00017         CodeTool(RobotXMLFile& ref);
00018         ~CodeTool();
00019         void SetRobot(Robot *x) { m_robot = x; }
00020         bool Sane();
00021         void Call(const std::string& method);
00022 
00023         int GetOpsize(unsigned char op) { return m_opsize[op]; }
00024         const std::string& GetOpcode(unsigned char op) { return m_opcode[op]; }
00025         unsigned char GetCode(int ptr) { return (ptr >= 0 && ptr < (int)m_codesize) ? m_code[ptr] : 0; }
00026         size_t GetCodesize() { return m_codesize; }
00027         const unsigned char *GetBuf() { return m_code; }
00028 
00029         // code runner
00030         unsigned char Execute();
00031         void Jump(short);
00032         long get_property(int,int);
00033         void set_property(int,int,long);
00034         long call_method(int,int);
00035 
00036 private:
00037         RobotXMLFile& m_config;
00038         Robot *m_robot;
00039         size_t m_codesize;
00040         unsigned char *m_code;
00041         std::map<std::string,int> m_methodmap;
00042         std::string m_opcode[256];
00043         int m_opsize[256];
00044         std::vector<VARIABLE *> m_variables;
00045 
00046         // code runner
00047         size_t m_ptr; // current code ptr
00048         long m_register1;
00049         long m_register2;
00050         stack_v m_stack;
00051         std::vector<MapObject *> * m_loop;
00052         std::vector<MapObject *>::iterator m_loop_iterator;
00053         bool m_loop_init;
00054 };
00055 
00056 
00057 
00058 
00059 #endif // _CODETOOL_H

Generated for Robot World by doxygen 1.3.6

Page, code, and content Copyright (C) 2004 by Anders Hedström