diff system/file.h @ 53:ddbcbd000206

* MuSys, AyuSysConfig, FileSearcher (former FILESEARCHER) and KeyHolder (former KEYHOLDER) are now singletons * ParseMoji moved to TextStream * Some cleaning (0 -> NULL when needed, removal of useless returns, ...)
author thib
date Sun, 19 Apr 2009 11:44:05 +0000
parents 15a18fbe6f21
children 4416cfac86ae
line wrap: on
line diff
--- a/system/file.h
+++ b/system/file.h
@@ -1,6 +1,6 @@
 /*  file.h  : KANON の圧縮ファイル・PDT ファイル(画像ファイル)の展開の
  *            ためのクラス
- *     class FILESEARCH : ファイルの管理を行う
+ *     class FileSearcher : ファイルの管理を行う
  *     class ARCINFO : 書庫ファイルの中の1つのファイルを扱うクラス
  *     class PDTCONV : PDT ファイルの展開を行う。
  */
@@ -87,7 +87,7 @@ static int write_little_endian_short(cha
 
 
 /*********************************************
-**  FILESEARCH:
+**  FileSearcher:
 **	書庫ファイル/ディレクトリを含め、
 **	全ファイルの管理を行う。
 **
@@ -106,17 +106,28 @@ class SCN2kFILE;
 class ARCINFO;
 class ARCFILE_ATOM;
 
-class KEYHOLDER {
+class KeyHolder {
 	public:
+		static KeyHolder* GetInstance(void);
+		static void Quit(void);
+
 		void SetKey(char[16]);
 		void SetKey2(char[33]);
 		void GuessKey(char*);
+
+	private:
+		KeyHolder(){}
+		~KeyHolder(){}
+
+	public:
 		const char* GetKey(void);
+
 	private:
 		char key[16];
+		static KeyHolder* _singleton;
 };
 
-class FILESEARCH {
+class FileSearcher {
 	public:
 #define TYPEMAX 14
 		enum FILETYPE {
@@ -136,20 +147,11 @@ class FILESEARCH {
 			GAN = 13  /* default : MOV */
 		};
 		enum ARCTYPE {ATYPE_DIR, ATYPE_ARC, ATYPE_SCN2k};
-	private:
-		/* InitRoot() の時点で初期化される変数 */
-		DIRFILE* root_dir;
-		DIRFILE* dat_dir;
-		ARCFILE* searcher[TYPEMAX];
-		/* ファイルの存在位置の information */
-		ARCTYPE is_archived[TYPEMAX];
-		const char* filenames[TYPEMAX];
-		/* デフォルトの information */
-		static ARCTYPE default_is_archived[TYPEMAX];
-		static const char* default_dirnames[TYPEMAX];
+
 	public:
-		FILESEARCH(void);
-		~FILESEARCH();
+		static FileSearcher* GetInstance(void);
+		static void Quit(void);
+
 		/* 初めにゲームのデータがあるディレクトリを設定する必要がある */
 		int InitRoot(char* root);
 		/* ファイルの型ごとの情報をセットする */
@@ -165,6 +167,23 @@ class FILESEARCH {
 		** 末尾は NULL pointer
 		*/
 		char** ListAll(FILETYPE type);
+
+	private:
+		FileSearcher(void);
+		~FileSearcher();
+
+	private:
+		/* InitRoot() の時点で初期化される変数 */
+		DIRFILE* root_dir;
+		DIRFILE* dat_dir;
+		ARCFILE* searcher[TYPEMAX];
+		/* ファイルの存在位置の information */
+		ARCTYPE is_archived[TYPEMAX];
+		const char* filenames[TYPEMAX];
+		/* デフォルトの information */
+		static ARCTYPE default_is_archived[TYPEMAX];
+		static const char* default_dirnames[TYPEMAX];
+		static FileSearcher *_singleton;
 };
 
 class ARCINFO {
@@ -231,7 +250,4 @@ class GRPCONV {
 		void CopyRGB_rev(char* image, const char* from);
 };
 
-extern FILESEARCH file_searcher;
-extern KEYHOLDER key_holder;
-
 #endif // !defined(__KANON_FILE_H__)