OSDN Git Service

ExtractInfo,EnumMembersInfoの変換をマクロに統合。
authorsirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Wed, 9 Feb 2011 13:56:56 +0000 (13:56 +0000)
committersirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Wed, 9 Feb 2011 13:56:56 +0000 (13:56 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/tpi/tpi@484 9df91469-1e22-0410-86e7-ea8537beb833

src/plugin/calLibrary/calLibrary.cpp

index 88059bc..930035d 100644 (file)
@@ -71,6 +71,83 @@ wxDateTime FileTimeToWxDateTime(FILETIME * pft)
 //    Callback Wrapper\r
 //******************************************************************************\r
 \r
+#define MyConvEI322PI(EI, strconv) \\r
+       EI * ex = (EI *) _lpEis; \\r
+       \\r
+       piInfo.fiInfo.dwCRC32           = ex->dwCRC; \\r
+       piInfo.fiInfo.tmModify.SetFromDOS(MAKELONG(ex->wTime, ex->wDate)); \\r
+       piInfo.fiInfo.nPackedSize       = ex->dwCompressedSize; \\r
+       piInfo.fiInfo.nUnpackedSize     = ex->exinfo.dwFileSize; \\r
+       piInfo.fiInfo.eOSType           = ex->uOSType; \\r
+       piInfo.fiInfo.wCompressRatio    = ex->wRatio; \\r
+       piInfo.fiInfo.szStoredName      = strconv(ex->exinfo.szSourceFileName); \\r
+       piInfo.fiInfo.szMethod          = strconv(ex->szMode); \\r
+       \\r
+       piInfo.nProcessedSize           = ex->exinfo.dwWriteSize; \\r
+       piInfo.fnDestination            = wxFileName(strconv(ex->exinfo.szDestFileName));\r
+\r
+#define MyConvEI642PI(EI, strconv) \\r
+       EI * ex = (EI *) _lpEis; \\r
+       \\r
+       piInfo.fiInfo.dwAttribute       = ex->dwAttributes; \\r
+       piInfo.fiInfo.dwCRC32           = ex->dwCRC; \\r
+       piInfo.fiInfo.tmAccess          = FileTimeToWxDateTime(& ex->ftAccessTime); \\r
+       piInfo.fiInfo.tmCreate          = FileTimeToWxDateTime(& ex->ftCreateTime); \\r
+       piInfo.fiInfo.tmModify          = FileTimeToWxDateTime(& ex->ftWriteTime); \\r
+       piInfo.fiInfo.nPackedSize       = ex->llCompressedSize; \\r
+       piInfo.fiInfo.nUnpackedSize     = ex->llFileSize; \\r
+       piInfo.fiInfo.eOSType           = ex->uOSType; \\r
+       piInfo.fiInfo.wCompressRatio    = ex->wRatio; \\r
+       piInfo.fiInfo.szStoredName      = strconv(ex->exinfo.szSourceFileName); \\r
+       piInfo.fiInfo.szMethod          = strconv(ex->szMode); \\r
+       \\r
+       piInfo.nProcessedSize           = ex->llWriteSize; \\r
+       piInfo.fnDestination            = wxFileName(strconv(ex->exinfo.szDestFileName));\r
+\r
+#define MyConvEM322PI(EM, strconv) \\r
+       EM * ex = (EM *) _lpEis; \\r
+       if (ex->uCommand != COMMAND_EXTRACT) \\r
+       { \\r
+               return TRUE; \\r
+       } \\r
+       \\r
+       piInfo.fiInfo.dwAttribute       = ex->dwAttributes; \\r
+       piInfo.fiInfo.dwCRC32           = ex->dwCRC; \\r
+       piInfo.fiInfo.tmAccess          = FileTimeToWxDateTime(& ex->ftAccessTime); \\r
+       piInfo.fiInfo.tmCreate          = FileTimeToWxDateTime(& ex->ftCreateTime); \\r
+       piInfo.fiInfo.tmModify          = FileTimeToWxDateTime(& ex->ftWriteTime); \\r
+       piInfo.fiInfo.nPackedSize       = ex->dwCompressedSize; \\r
+       piInfo.fiInfo.nUnpackedSize     = ex->dwOriginalSize; \\r
+       piInfo.fiInfo.eOSType           = ex->uOSType; \\r
+       piInfo.fiInfo.wCompressRatio    = ex->wRatio; \\r
+       piInfo.fiInfo.szStoredName      = strconv(ex->szFileName); \\r
+       piInfo.fiInfo.fnFileName        = wxFileName(piInfo.fiInfo.szStoredName); \\r
+       \\r
+       piInfo.fnDestination            = wxFileName(strconv(ex->szAddFileName)); \\r
+       g_prProc(TPI_NOTIFY_COMMON, & piInfo);\r
+\r
+#define MyConvEM642PI(EM, strconv) \\r
+       EM * ex = (EM *) _lpEis; \\r
+       if (ex->uCommand != COMMAND_EXTRACT) \\r
+       { \\r
+               return TRUE; \\r
+       } \\r
+       \\r
+       piInfo.fiInfo.dwAttribute       = ex->dwAttributes; \\r
+       piInfo.fiInfo.dwCRC32           = ex->dwCRC; \\r
+       piInfo.fiInfo.tmAccess          = FileTimeToWxDateTime(& ex->ftAccessTime); \\r
+       piInfo.fiInfo.tmCreate          = FileTimeToWxDateTime(& ex->ftCreateTime); \\r
+       piInfo.fiInfo.tmModify          = FileTimeToWxDateTime(& ex->ftWriteTime); \\r
+       piInfo.fiInfo.nPackedSize       = ex->llCompressedSize; \\r
+       piInfo.fiInfo.nUnpackedSize     = ex->llOriginalSize; \\r
+       piInfo.fiInfo.eOSType           = ex->uOSType; \\r
+       piInfo.fiInfo.wCompressRatio    = ex->wRatio; \\r
+       piInfo.fiInfo.szStoredName      = strconv(ex->szFileName); \\r
+       piInfo.fiInfo.fnFileName        = wxFileName(piInfo.fiInfo.szStoredName); \\r
+       \\r
+       piInfo.fnDestination            = wxFileName(strconv(ex->szAddFileName)); \\r
+       g_prProc(TPI_NOTIFY_COMMON, & piInfo);\r
+\r
 BOOL __stdcall CallbackProc(HWND, unsigned int _uMsg, unsigned int _uState, void * _lpEis)\r
 {\r
        if (_uMsg != ::RegisterWindowMessage(WM_ARCEXTRACT))\r
@@ -89,41 +166,13 @@ BOOL __stdcall CallbackProc(HWND, unsigned int _uMsg, unsigned int _uState, void
                {\r
                        if ((g_LibInfo.fRunning && g_LibInfo.fUnicode) || (g_LibInfoAlt.fRunning && g_LibInfoAlt.fUnicode))\r
                        {\r
-                               // 初期化。\r
-                               EXTRACTINGINFOEXW * ex = (EXTRACTINGINFOEXW *) _lpEis;\r
-\r
-                               // EXTRACTINGINFOEXW -> TPI_FILEINFO変換。\r
-                               piInfo.fiInfo.dwCRC32           = ex->dwCRC;\r
-                               piInfo.fiInfo.tmModify.SetFromDOS(MAKELONG(ex->wTime, ex->wDate));\r
-                               piInfo.fiInfo.nPackedSize       = ex->dwCompressedSize;\r
-                               piInfo.fiInfo.nUnpackedSize     = ex->exinfo.dwFileSize;\r
-                               piInfo.fiInfo.eOSType           = ex->uOSType;\r
-                               piInfo.fiInfo.wCompressRatio    = ex->wRatio;\r
-                               piInfo.fiInfo.szStoredName      = WC2String(ex->exinfo.szSourceFileName);\r
-                               piInfo.fiInfo.szMethod          = WC2String(ex->szMode);\r
-\r
                                // EXTRACTINGINFOEXW -> TPI_PROCESSINFO変換。\r
-                               piInfo.nProcessedSize           = ex->exinfo.dwWriteSize;\r
-                               piInfo.fnDestination            = wxFileName(WC2String(ex->exinfo.szDestFileName));\r
+                               MyConvEI322PI(EXTRACTINGINFOEXW, WC2String);\r
                        }\r
                        else\r
                        {\r
-                               // 初期化。\r
-                               EXTRACTINGINFOEX * ex = (EXTRACTINGINFOEX *) _lpEis;\r
-\r
-                               // EXTRACTINGINFOEX -> TPI_FILEINFO変換。\r
-                               piInfo.fiInfo.dwCRC32           = ex->dwCRC;\r
-                               piInfo.fiInfo.tmModify.SetFromDOS(MAKELONG(ex->wTime, ex->wDate));\r
-                               piInfo.fiInfo.nPackedSize       = ex->dwCompressedSize;\r
-                               piInfo.fiInfo.nUnpackedSize     = ex->exinfo.dwFileSize;\r
-                               piInfo.fiInfo.eOSType           = ex->uOSType;\r
-                               piInfo.fiInfo.wCompressRatio    = ex->wRatio;\r
-                               piInfo.fiInfo.szStoredName      = UTF82String(ex->exinfo.szSourceFileName);\r
-                               piInfo.fiInfo.szMethod          = UTF82String(ex->szMode);\r
-\r
                                // EXTRACTINGINFOEX -> TPI_PROCESSINFO変換。\r
-                               piInfo.nProcessedSize           = ex->exinfo.dwWriteSize;\r
-                               piInfo.fnDestination            = wxFileName(UTF82String(ex->exinfo.szDestFileName));\r
+                               MyConvEI322PI(EXTRACTINGINFOEX, UTF82String);\r
                        }\r
                        piInfo.fiInfo.dwAttribute       = 0;\r
                }\r
@@ -131,47 +180,13 @@ BOOL __stdcall CallbackProc(HWND, unsigned int _uMsg, unsigned int _uState, void
                {\r
                        if ((g_LibInfo.fRunning && g_LibInfo.fUnicode) || (g_LibInfoAlt.fRunning && g_LibInfoAlt.fUnicode))\r
                        {\r
-                               // 初期化。\r
-                               EXTRACTINGINFOEX64W * ex = (EXTRACTINGINFOEX64W *) _lpEis;\r
-\r
-                               // EXTRACTINGINFOEX64W -> TPI_FILEINFO変換。\r
-                               piInfo.fiInfo.dwAttribute       = ex->dwAttributes;\r
-                               piInfo.fiInfo.dwCRC32           = ex->dwCRC;\r
-                               piInfo.fiInfo.tmAccess          = FileTimeToWxDateTime(& ex->ftAccessTime);\r
-                               piInfo.fiInfo.tmCreate          = FileTimeToWxDateTime(& ex->ftCreateTime);\r
-                               piInfo.fiInfo.tmModify          = FileTimeToWxDateTime(& ex->ftWriteTime);\r
-                               piInfo.fiInfo.nPackedSize       = ex->llCompressedSize;\r
-                               piInfo.fiInfo.nUnpackedSize     = ex->llFileSize;\r
-                               piInfo.fiInfo.eOSType           = ex->uOSType;\r
-                               piInfo.fiInfo.wCompressRatio    = ex->wRatio;\r
-                               piInfo.fiInfo.szStoredName      = WC2String(ex->exinfo.szSourceFileName);\r
-                               piInfo.fiInfo.szMethod          = WC2String(ex->szMode);\r
-\r
-                               // EXTRACTINGINFOEX64 -> TPI_PROCESSINFO変換。\r
-                               piInfo.nProcessedSize           = ex->llWriteSize;\r
-                               piInfo.fnDestination            = wxFileName(WC2String(ex->exinfo.szDestFileName));\r
+                               // EXTRACTINGINFOEX64W -> TPI_PROCESSINFO変換。\r
+                               MyConvEI642PI(EXTRACTINGINFOEX64W, WC2String);\r
                        }\r
                        else\r
                        {\r
-                               // 初期化。\r
-                               EXTRACTINGINFOEX64 * ex = (EXTRACTINGINFOEX64 *) _lpEis;\r
-\r
-                               // EXTRACTINGINFOEX64 -> TPI_FILEINFO変換。\r
-                               piInfo.fiInfo.dwAttribute       = ex->dwAttributes;\r
-                               piInfo.fiInfo.dwCRC32           = ex->dwCRC;\r
-                               piInfo.fiInfo.tmAccess          = FileTimeToWxDateTime(& ex->ftAccessTime);\r
-                               piInfo.fiInfo.tmCreate          = FileTimeToWxDateTime(& ex->ftCreateTime);\r
-                               piInfo.fiInfo.tmModify          = FileTimeToWxDateTime(& ex->ftWriteTime);\r
-                               piInfo.fiInfo.nPackedSize       = ex->llCompressedSize;\r
-                               piInfo.fiInfo.nUnpackedSize     = ex->llFileSize;\r
-                               piInfo.fiInfo.eOSType           = ex->uOSType;\r
-                               piInfo.fiInfo.wCompressRatio    = ex->wRatio;\r
-                               piInfo.fiInfo.szStoredName      = UTF82String(ex->exinfo.szSourceFileName);\r
-                               piInfo.fiInfo.szMethod          = UTF82String(ex->szMode);\r
-\r
                                // EXTRACTINGINFOEX64 -> TPI_PROCESSINFO変換。\r
-                               piInfo.nProcessedSize           = ex->llWriteSize;\r
-                               piInfo.fnDestination            = wxFileName(UTF82String(ex->exinfo.szDestFileName));\r
+                               MyConvEI642PI(EXTRACTINGINFOEX64, UTF82String);\r
                        }\r
                }\r
                piInfo.fiInfo.fnFileName        = wxFileName(piInfo.fiInfo.szStoredName);\r
@@ -240,60 +255,14 @@ BOOL __stdcall EnumMembersProc(void * _lpEis)
                {\r
                        if ((g_LibInfo.fRunning && g_LibInfo.fUnicode) || (g_LibInfoAlt.fRunning && g_LibInfoAlt.fUnicode))\r
                        {\r
-                               // 初期化。\r
-                               ENUM_MEMBER_INFOW * ex = (ENUM_MEMBER_INFOW *) _lpEis;\r
-                               if (ex->uCommand != COMMAND_EXTRACT)\r
-                               {\r
-                                       return TRUE;\r
-                               }\r
-\r
                                // ENUM_MEMBER_INFOW -> TPI_FILEINFO変換。\r
-                               piInfo.fiInfo.dwAttribute       = ex->dwAttributes;\r
-                               piInfo.fiInfo.dwCRC32           = ex->dwCRC;\r
-                               piInfo.fiInfo.tmAccess          = FileTimeToWxDateTime(& ex->ftAccessTime);\r
-                               piInfo.fiInfo.tmCreate          = FileTimeToWxDateTime(& ex->ftCreateTime);\r
-                               piInfo.fiInfo.tmModify          = FileTimeToWxDateTime(& ex->ftWriteTime);\r
-                               piInfo.fiInfo.nPackedSize       = ex->dwCompressedSize;\r
-                               piInfo.fiInfo.nUnpackedSize     = ex->dwOriginalSize;\r
-                               piInfo.fiInfo.eOSType           = ex->uOSType;\r
-                               piInfo.fiInfo.wCompressRatio    = ex->wRatio;\r
-                               piInfo.fiInfo.szStoredName      = WC2String(ex->szFileName);\r
-                               piInfo.fiInfo.fnFileName        = wxFileName(piInfo.fiInfo.szStoredName);\r
-\r
-                               // ENUM_MEMBER_INFOW -> TPI_PROCESSINFO変換。\r
-                               piInfo.fnDestination            = wxFileName(WC2String(ex->szAddFileName));\r
-\r
-                               // コールバック関数に送信。\r
-                               g_prProc(TPI_NOTIFY_COMMON, & piInfo);\r
+                               MyConvEM322PI(ENUM_MEMBER_INFOW, WC2String);\r
                                wcsncpy(ex->szAddFileName, piInfo.fnDestination.GetFullPath().c_str(), FNAME_MAX32);\r
                        }\r
                        else\r
                        {\r
-                               // 初期化。\r
-                               ENUM_MEMBER_INFO * ex = (ENUM_MEMBER_INFO *) _lpEis;\r
-                               if (ex->uCommand != COMMAND_EXTRACT)\r
-                               {\r
-                                       return TRUE;\r
-                               }\r
-\r
                                // ENUM_MEMBER_INFO -> TPI_FILEINFO変換。\r
-                               piInfo.fiInfo.dwAttribute       = ex->dwAttributes;\r
-                               piInfo.fiInfo.dwCRC32           = ex->dwCRC;\r
-                               piInfo.fiInfo.tmAccess          = FileTimeToWxDateTime(& ex->ftAccessTime);\r
-                               piInfo.fiInfo.tmCreate          = FileTimeToWxDateTime(& ex->ftCreateTime);\r
-                               piInfo.fiInfo.tmModify          = FileTimeToWxDateTime(& ex->ftWriteTime);\r
-                               piInfo.fiInfo.nPackedSize       = ex->dwCompressedSize;\r
-                               piInfo.fiInfo.nUnpackedSize     = ex->dwOriginalSize;\r
-                               piInfo.fiInfo.eOSType           = ex->uOSType;\r
-                               piInfo.fiInfo.wCompressRatio    = ex->wRatio;\r
-                               piInfo.fiInfo.szStoredName      = UTF82String(ex->szFileName);\r
-                               piInfo.fiInfo.fnFileName        = wxFileName(piInfo.fiInfo.szStoredName);\r
-\r
-                               // ENUM_MEMBER_INFO -> TPI_PROCESSINFO変換。\r
-                               piInfo.fnDestination            = wxFileName(UTF82String(ex->szAddFileName));\r
-\r
-                               // コールバック関数に送信。\r
-                               g_prProc(TPI_NOTIFY_COMMON, & piInfo);\r
+                               MyConvEM322PI(ENUM_MEMBER_INFO, UTF82String);\r
                                strncpy(ex->szAddFileName, piInfo.fnDestination.GetFullPath().ToUTF8(), FNAME_MAX32);\r
                        }\r
                }\r
@@ -301,60 +270,14 @@ BOOL __stdcall EnumMembersProc(void * _lpEis)
                {\r
                        if ((g_LibInfo.fRunning && g_LibInfo.fUnicode) || (g_LibInfoAlt.fRunning && g_LibInfoAlt.fUnicode))\r
                        {\r
-                               // 初期化。\r
-                               ENUM_MEMBER_INFO64W * ex = (ENUM_MEMBER_INFO64W *) _lpEis;\r
-                               if (ex->uCommand != COMMAND_EXTRACT)\r
-                               {\r
-                                       return TRUE;\r
-                               }\r
-\r
                                // ENUM_MEMBER_INFO64W -> TPI_FILEINFO変換。\r
-                               piInfo.fiInfo.dwAttribute       = ex->dwAttributes;\r
-                               piInfo.fiInfo.dwCRC32           = ex->dwCRC;\r
-                               piInfo.fiInfo.tmAccess          = FileTimeToWxDateTime(& ex->ftAccessTime);\r
-                               piInfo.fiInfo.tmCreate          = FileTimeToWxDateTime(& ex->ftCreateTime);\r
-                               piInfo.fiInfo.tmModify          = FileTimeToWxDateTime(& ex->ftWriteTime);\r
-                               piInfo.fiInfo.nPackedSize       = ex->llCompressedSize;\r
-                               piInfo.fiInfo.nUnpackedSize     = ex->llOriginalSize;\r
-                               piInfo.fiInfo.eOSType           = ex->uOSType;\r
-                               piInfo.fiInfo.wCompressRatio    = ex->wRatio;\r
-                               piInfo.fiInfo.szStoredName      = WC2String(ex->szFileName);\r
-                               piInfo.fiInfo.fnFileName        = wxFileName(piInfo.fiInfo.szStoredName);\r
-\r
-                               // ENUM_MEMBER_INFO64W -> TPI_PROCESSINFO変換。\r
-                               piInfo.fnDestination            = wxFileName(WC2String(ex->szAddFileName));\r
-\r
-                               // コールバック関数に送信。\r
-                               g_prProc(TPI_NOTIFY_COMMON, & piInfo);\r
+                               MyConvEM642PI(ENUM_MEMBER_INFO64W, WC2String);\r
                                wcsncpy(ex->szAddFileName, piInfo.fnDestination.GetFullPath().c_str(), FNAME_MAX32);\r
                        }\r
                        else\r
                        {\r
-                               // 初期化。\r
-                               ENUM_MEMBER_INFO64 * ex = (ENUM_MEMBER_INFO64 *) _lpEis;\r
-                               if (ex->uCommand != COMMAND_EXTRACT)\r
-                               {\r
-                                       return TRUE;\r
-                               }\r
-\r
                                // ENUM_MEMBER_INFO64 -> TPI_FILEINFO変換。\r
-                               piInfo.fiInfo.dwAttribute       = ex->dwAttributes;\r
-                               piInfo.fiInfo.dwCRC32           = ex->dwCRC;\r
-                               piInfo.fiInfo.tmAccess          = FileTimeToWxDateTime(& ex->ftAccessTime);\r
-                               piInfo.fiInfo.tmCreate          = FileTimeToWxDateTime(& ex->ftCreateTime);\r
-                               piInfo.fiInfo.tmModify          = FileTimeToWxDateTime(& ex->ftWriteTime);\r
-                               piInfo.fiInfo.nPackedSize       = ex->llCompressedSize;\r
-                               piInfo.fiInfo.nUnpackedSize     = ex->llOriginalSize;\r
-                               piInfo.fiInfo.eOSType           = ex->uOSType;\r
-                               piInfo.fiInfo.wCompressRatio    = ex->wRatio;\r
-                               piInfo.fiInfo.szStoredName      = UTF82String(ex->szFileName);\r
-                               piInfo.fiInfo.fnFileName        = wxFileName(piInfo.fiInfo.szStoredName);\r
-\r
-                               // ENUM_MEMBER_INFO64 -> TPI_PROCESSINFO変換。\r
-                               piInfo.fnDestination            = wxFileName(UTF82String(ex->szAddFileName));\r
-\r
-                               // コールバック関数に送信。\r
-                               g_prProc(TPI_NOTIFY_COMMON, & piInfo);\r
+                               MyConvEM642PI(ENUM_MEMBER_INFO64, UTF82String);\r
                                strncpy(ex->szAddFileName, piInfo.fnDestination.GetFullPath().ToUTF8(), FNAME_MAX32);\r
                        }\r
                }\r