1 #pragma once
2 
3 #include <string>
4 #include <memory>
5 #include "../MIPS.h"
6 
7 namespace Framework
8 {
9 	class CZipArchiveWriter;
10 	class CZipArchiveReader;
11 };
12 
13 namespace Iop
14 {
15 	class CModule
16 	{
17 	public:
18 		virtual ~CModule() = default;
19 		virtual std::string GetId() const = 0;
20 		virtual std::string GetFunctionName(unsigned int) const = 0;
21 		virtual void Invoke(CMIPS&, unsigned int) = 0;
22 
SaveState(Framework::CZipArchiveWriter &)23 		virtual void SaveState(Framework::CZipArchiveWriter&) const {};
LoadState(Framework::CZipArchiveReader &)24 		virtual void LoadState(Framework::CZipArchiveReader&){};
25 
26 		static std::string PrintStringParameter(const uint8*, uint32);
27 	};
28 
29 	typedef std::shared_ptr<CModule> ModulePtr;
30 };
31