#pragma once #include class CCompiledFunc { public: CCompiledFunc(const CCodeBlock & CodeBlock); typedef void (*Func)(); //Get Private Information const uint32_t EnterPC () const { return m_EnterPC; } const uint32_t MinPC () const { return m_MinPC; } const uint32_t MaxPC () const { return m_MaxPC; } const Func Function () const { return m_Function; } const uint8_t *FunctionEnd() const { return m_FunctionEnd; } const MD5Digest& Hash () const { return m_Hash; } CCompiledFunc* Next () const { return m_Next; } void SetNext(CCompiledFunc* Next) { m_Next = Next; } uint64_t MemContents(int32_t i) { return m_MemContents[i]; } uint64_t* MemLocation(int32_t i) { return m_MemLocation[i]; } private: CCompiledFunc(void); // Disable default constructor CCompiledFunc(const CCompiledFunc&); // Disable copy constructor CCompiledFunc& operator=(const CCompiledFunc&); // Disable assignment //Information uint32_t m_EnterPC; // The Entry PC uint32_t m_MinPC; // The Lowest PC in the function uint32_t m_MaxPC; // The Highest PC in the function uint8_t * m_FunctionEnd; // Where the code bytes end MD5Digest m_Hash; //From querying the recompiler get information about the function Func m_Function; CCompiledFunc* m_Next; //Validation uint64_t m_MemContents[2], * m_MemLocation[2]; }; typedef std::map CCompiledFuncList;