diff scn2k/scn2k_flags.h @ 56:c7bcc0ec2267

* replaced Grp and Text classes by the TextImpl and GrpImpl ones * splitted scn2k.h into smaller header files * moved some definitions from scn2k_*.cc to the header files * moved opcode implementation to scn2k_*impl.cc
author thib
date Thu, 30 Apr 2009 19:05:09 +0000
parents
children 4b9ffe15a87d
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/scn2k/scn2k_flags.h
@@ -0,0 +1,73 @@
+#ifndef __SCN2K_FLAGS_H__
+#define __SCN2K_FLAGS_H__
+
+#include <set>
+#include <string>
+
+struct VarInfo {
+#define TYPE_NONSYSVARMAX 5
+#define TYPE_VARMAX 9
+#define TYPE_VARLOCSTR 10
+#define TYPE_VARSYSSTR 12
+#define TYPE_VARSTR 18
+#define TYPE_STR 58
+#define TYPE_VAL 68
+#define TYPE_SYS 0xc8
+#define TYPE_END 0x7f
+
+#define TYPE_SYS_SYS 0
+#define TYPE_SYS_SKIPMODE 1
+	int type;
+	int number;
+	int value;
+	VarInfo() { type = TYPE_VAL; value = 0;}
+	VarInfo(int n) { type = TYPE_VAL; value = n;}
+	VarInfo(const VarInfo& i) { type = i.type; number = i.number; value = i.value;}
+};
+
+class Flags {
+/* flag:
+**  type 0-5 : ¥í¡Œ¥«¥ëÀ°¿ô¡¢³Æ2000žÄ
+**  type 6, 25 : ¥°¥í¡Œ¥Ð¥ëÀ°¿ô¡¢2000žÄ
+**      type 10,11: ¥í¡Œ¥«¥ëÀ°¿ô??¡¢³Æ2000žÄ
+**	type 12 : ¥°¥í¡Œ¥Ð¥ëÊž»úÎó¡¢2000žÄ (º£€Ï̵»ë€·€Æ€âÎÉ€€€¬)
+**	type 18 : ¥í¡Œ¥«¥ëÊž»úÎó¡¢2000žÄ
+**	type 25: ¥·¥¹¥Æ¥àÊÑ¿ô¡Ê¥Þ¥Š¥¹ºÂÉž€Ê€É¡©¡Ë 1000 žÄ¡©
+**  type 26-32, 51 : 1-bit access to 0-6, 25
+**  type 52-58, 77 : 2-bit access to 0-6, 25
+**  type 78-84, 103 : 4-bit access to 0-6, 25
+**  type 104-110, 129 : 8-bit access to 0-6, 25
+*/
+	private:
+		typedef unsigned int uint;
+		int sys;
+		int var[TYPE_VARMAX+1][2000];
+		std::string str[2000];
+		std::string sys_str[2000];
+		std::string loc_str[3];
+	public:
+		Flags(void);
+		int operator () () const;
+		int operator () (VarInfo info) const;
+		void Str(int type, unsigned int number, char* buf, int sz) const;
+		std::string Str(int type, unsigned int number) const;
+		std::set<int> cgm_data;
+
+		bool IsInt(int type) const;
+		int MaxIndex(int type) const;
+
+		void Set(VarInfo info, int value);
+		int Get(int type, int number) const;
+		void SetSys(int value);
+		void SetStr(VarInfo info, std::string val);
+
+		bool Exec(class Cmd& cmd);
+
+		void Save(std::string& str);
+		void Load(const char* str);
+
+		void SaveSys(std::string& str);
+		void LoadSys(const char* str);
+};
+
+#endif