OSDN Git Service

書庫化可能な形式かどうかを表すTPI_FORMATINFO::fArchiveを追加。
[tpi/lychee.git] / src / common / header / plugin.h
1 /** \r
2  * @file    plugin.h\r
3  * @brief   プラグインで読み込むTPI共通ヘッダ。\r
4  * @version $Id$\r
5  *\r
6  * @mainpage TPI reference manual\r
7  * TPIは簡易でマルチプラットフォームなプラグイン仕様です。仕様は現在策定中であるため、今後改訂される可能性があります。\r
8  */\r
9 /*******************************************************************************\r
10   TPI - flexible but useless plug-in framework.\r
11   Copyright (C) 2002-2009 Silky\r
12 \r
13   This library is free software; you can redistribute it and/or modify it under\r
14   the terms of the GNU Lesser General Public License as published by the Free\r
15   Software Foundation; either version 2.1 of the License, or (at your option)\r
16   any later version.\r
17 \r
18   This library is distributed in the hope that it will be useful, but WITHOUT\r
19   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or \r
20   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License\r
21   for more details.\r
22 \r
23   You should have received a copy of the GNU Lesser General Public License along\r
24   with this library; if not, write to the Free Software Foundation, Inc.,\r
25   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA\r
26 *******************************************************************************/\r
27 \r
28 #define wxUSE_UNICODE       1\r
29 #include <wx/wx.h>\r
30 #include <wx/filename.h>\r
31 \r
32 #ifndef __TPI_API_SPEC\r
33 #define __TPI_API_SPEC\r
34 \r
35 #ifdef __GNUC__\r
36 #define __stdcall __attribute__((__stdcall__))\r
37 #endif\r
38 \r
39 // *****************************************************************************\r
40 /// @defgroup constants 定数\r
41 /// @{\r
42 // *****************************************************************************\r
43 \r
44 /**\r
45  * @defgroup c_error エラーコード\r
46  * 各APIを実行した場合に返される、異常の理由を表す一意の数値。\r
47  * @{\r
48  */\r
49 /**\r
50  * @defgroup c_error_success 成功値\r
51  * 異常が発生しなかった場合の返し値。\r
52  * @{\r
53  */\r
54 /** 異常が発生せず、正常に処理を終了した。 */\r
55 #define TPI_ERROR_SUCCESS           1000\r
56 #define TPI_ERROR_S_ENDOFDATA       TPI_ERROR_SUCCESS + 1 /**< データの終端に到達し、得られる項目がなくなった。 */\r
57 /** @} c_error_success */\r
58 \r
59 /**\r
60  * @defgroup c_error_undefined 未定義エラー\r
61  * TPIとしては未定義の、各プラグイン独自のエラーを表す。\r
62  * @{\r
63  */\r
64 /** 未定義エラーの基本値。 */\r
65 #define TPI_ERROR_UNDEFINED         2000\r
66 #define TPI_ERROR_U_LOAD_LIBRARY    TPI_ERROR_UNDEFINED + 1 /**< 処理ライブラリの初期化に失敗した。 */\r
67 #define TPI_ERROR_U_USE_LIBRARY     TPI_ERROR_UNDEFINED + 2 /**< 処理ライブラリの使用時に問題が発生した。 */\r
68 #define TPI_ERROR_U_FREE_LIBRARY    TPI_ERROR_UNDEFINED + 3 /**< 処理ライブラリの解放に失敗した。 */\r
69 /** @} c_error_undefined */\r
70 \r
71 /**\r
72  * @defgroup c_error_defined 定義済エラー\r
73  * TPIとして定義されたエラーを表す。\r
74  * @{\r
75  */\r
76 /** 定義済みエラーの基本値。 */\r
77 #define TPI_ERROR_DEFINED           3000\r
78 #define TPI_ERROR_D_PARAMETER       TPI_ERROR_DEFINED + 1   /**< APIに渡された引数が不正であった。 */\r
79 #define TPI_ERROR_D_UNSUPPORTED     TPI_ERROR_DEFINED + 2   /**< 対応していないAPIである。もしくは、APIの動作のうち対応していないものを実行しようとした。 */\r
80 #define TPI_ERROR_D_SKIPPED         TPI_ERROR_DEFINED + 3   /**< コールバック関数が、APIに処理を中止するよう指示した。 */\r
81 #define TPI_ERROR_D_OUTOFMEMORY     TPI_ERROR_DEFINED + 4   /**< 処理中にメモリが不足し、確保できなくなった。 */\r
82 #define TPI_ERROR_D_USEMEMORY       TPI_ERROR_DEFINED + 5   /**< メモリを使用/解放する際に問題が発生した。 */\r
83 \r
84 /**\r
85  * @defgroup c_error_defined_io I/Oエラー\r
86  * 各種I/Oエラーを表す。実際に返される数値は plugin-extra.h に定義されている定数を参照。\r
87  * @{\r
88  * @defgroup c_error_defined_io_target I/O対象ファイル\r
89  * I/Oエラーの対象となったファイルを表す。\r
90  * @{\r
91  */\r
92 #define TPI_ERROR_T_IO_MISC         0                           /**< 不明 */\r
93 #define TPI_ERROR_T_IO_ARCHIVE      TPI_ERROR_T_IO_MISC + 100   /**< 書庫 */\r
94 #define TPI_ERROR_T_IO_FILE         TPI_ERROR_T_IO_MISC + 200   /**< 通常ファイル */\r
95 #define TPI_ERROR_T_IO_WORKING      TPI_ERROR_T_IO_MISC + 300   /**< 中間ファイル */\r
96 #define TPI_ERROR_T_IO_DIRECTORY    TPI_ERROR_T_IO_MISC + 400   /**< ディレクトリ */\r
97 /** @} c_error_defined_io_target */\r
98 \r
99 #define TPI_ERROR_IO_MISC           4000                    /**< その他/不明なI/Oエラー。 */\r
100 #define TPI_ERROR_IO_NOTFOUND       TPI_ERROR_IO_MISC + 1   /**< ファイルが存在しない。 */\r
101 #define TPI_ERROR_IO_ACCESS         TPI_ERROR_IO_MISC + 2   /**< ファイルにアクセスできない。共有違反が発生した。 */\r
102 #define TPI_ERROR_IO_OPEN           TPI_ERROR_IO_MISC + 3   /**< ファイルを開くことに失敗した。 */\r
103 #define TPI_ERROR_IO_CLOSE          TPI_ERROR_IO_MISC + 4   /**< ファイルを閉じることに失敗した。 */\r
104 #define TPI_ERROR_IO_READ           TPI_ERROR_IO_MISC + 5   /**< ファイルからデータを読み込めない。 */\r
105 #define TPI_ERROR_IO_WRITE          TPI_ERROR_IO_MISC + 6   /**< ファイルにデータを書き込めない。 */\r
106 #define TPI_ERROR_IO_GETINFO        TPI_ERROR_IO_MISC + 7   /**< ファイルから各種の情報を取得することに失敗した。 */\r
107 #define TPI_ERROR_IO_POINT          TPI_ERROR_IO_MISC + 8   /**< ファイル内のポインタ移動に失敗した。 */\r
108 #define TPI_ERROR_IO_COPY           TPI_ERROR_IO_MISC + 9   /**< ファイルのコピーに失敗した。 */\r
109 #define TPI_ERROR_IO_MOVE           TPI_ERROR_IO_MISC + 10  /**< ファイルの移動に失敗した。 */\r
110 #define TPI_ERROR_IO_DELETE         TPI_ERROR_IO_MISC + 11  /**< ファイルの削除に失敗した。 */\r
111 #define TPI_ERROR_IO_SETINFO        TPI_ERROR_IO_MISC + 12  /**< ファイルに各種の情報を設定することに失敗した。 */\r
112 \r
113 #define TPI_ERROR_ARC_MISC          TPI_ERROR_IO_MISC + TPI_ERROR_T_IO_ARCHIVE + 20 /**< 書庫に関するエラーの基本値。 */\r
114 #define TPI_ERROR_ARC_UNSUPPORTED   TPI_ERROR_ARC_MISC + 1 /**< 書庫に対応していない。 */\r
115 #define TPI_ERROR_ARC_ENCRYPTED     TPI_ERROR_ARC_MISC + 2 /**< 書庫が暗号化されている。 */\r
116 #define TPI_ERROR_ARC_DANGER        TPI_ERROR_ARC_MISC + 3 /**< 書庫にセキュリティの問題がある。 */\r
117 #define TPI_ERROR_ARC_BROKEN_MISC   TPI_ERROR_IO_MISC + TPI_ERROR_T_IO_ARCHIVE + 30 /**< 書庫の破損に関するエラーの基本値。 */\r
118 #define TPI_ERROR_ARC_BROKEN_SUM    TPI_ERROR_ARC_BROKEN_MISC + 1  /**< チェックサムが一致しない。 */\r
119 #define TPI_ERROR_ARC_BROKEN_SIZE   TPI_ERROR_ARC_BROKEN_MISC + 2  /**< ファイルサイズが一致しない。 */\r
120 #define TPI_ERROR_ARC_BROKEN_HEADER TPI_ERROR_ARC_BROKEN_MISC + 3  /**< ヘッダが破損している。 */\r
121 /** @} c_error_defined_io */\r
122 /** @} c_error_defined */\r
123 /** @} c_error */\r
124 \r
125 /**\r
126  * @defgroup c_info 情報コード\r
127  * GetPluginInformation() で、プラグインに関する情報を取得する時に用いる、情報を表す一意の数値。\r
128  * @{\r
129  */\r
130 #define TPI_INFO_VERSION_MAJOR      0x0001  /**< プラグインのメジャーバージョン */\r
131 #define TPI_INFO_VERSION_MINOR      0x0002  /**< プラグインのマイナーバージョン */\r
132 #define TPI_INFO_VERSION_API        0x0003  /**< プラグインが対応するAPIのバージョン */\r
133 /** @} c_info */\r
134 \r
135 /**\r
136  * @defgroup c_command コマンドコード\r
137  * Command() で処理する内容を指定する一意の数値。\r
138  * @{\r
139  */\r
140 #define TPI_COMMAND_ADD             0x0001  /**< 書庫にファイルを格納する */\r
141 #define TPI_COMMAND_EXTRACT         0x0002  /**< 書庫からファイルを展開する */\r
142 #define TPI_COMMAND_DELETE          0x0004  /**< 書庫からファイルを削除する */\r
143 #define TPI_COMMAND_UPDATE          0x0008  /**< 書庫のファイルを更新する */\r
144 #define TPI_COMMAND_TEST            0x0010  /**< 書庫のファイルを検査する */\r
145 #define TPI_COMMAND_REPAIR          0x0020  /**< 書庫のファイルを修復する */\r
146 #define TPI_COMMAND_MOVE            0x0040  /**< 書庫のファイルを移動する */\r
147 #define TPI_COMMAND_SFX             0x0080  /**< 書庫をSFXに変換する */\r
148 #define TPI_COMMAND_UNSFX           0x0100  /**< 書庫をSFXから通常の書庫に変換する */\r
149 /** @} c_command */\r
150 \r
151 /**\r
152  * @defgroup c_process 処理コード\r
153  * コールバック関数にて対象となる処理を通知する一意の数値。\r
154  * @sa TPI_PROC\r
155  * @{\r
156  */\r
157 /** 共通メッセージ。通常の処理に対して送信される。 */\r
158 /** @sa c_process_common */\r
159 #define TPI_NOTIFY_COMMON           0x0001\r
160 #define TPI_NOTIFY_SETPARAM         0x0002  /**< パラメータ設定。任意のパラメータが要求する場合に送信される。 */\r
161 /** @} c_process */\r
162 \r
163 /**\r
164  * @defgroup c_process_common イベントコード\r
165  * TPI_NOTIFY_COMMON 送信時に、TPI_PROCESSINFO 構造体の uMessage に格納される値。\r
166  * @sa TPI_NOTIFY_COMMON\r
167  * @sa TPI_PROCESSINFO::uMessage\r
168  * @{\r
169  */\r
170 /** 進捗状況についての情報を TPI_PROCESSINFO に格納。 */\r
171 /** @sa c_process_common_status */\r
172 /** @sa TPI_PROCESSINFO */\r
173 #define TPI_MESSAGE_STATUS          0x0001 \r
174 #define TPI_MESSAGE_ASK             0x0002  /**< 何らかのパラメータが要求された。 */\r
175 /** 処理中に続行不可能なエラーが発生した。 */\r
176 /** @sa c_error */\r
177 #define TPI_MESSAGE_ERROR           0x1000\r
178 #define TPI_MESSAGE_WARNING         0x1001  /**< 処理中に続行可能な警告が発生した。 */\r
179 /** @} c_process_common */\r
180 \r
181 /**\r
182  * @defgroup c_process_common_status 進捗状況コード\r
183  * TPI_MESSAGE_STATUS が送信された時に、TPI_PROCESSINFO 構造体の uStatus に格納される値。\r
184  * @sa TPI_MESSAGE_STATUS\r
185  * @sa TPI_PROCESSINFO::uStatus\r
186  * @{\r
187  */\r
188 #define TPI_STATUS_OPENARCHIVE      0x0001  /**< 書庫を開いた。 */\r
189 #define TPI_STATUS_CLOSEARCHIVE     0x0002  /**< 書庫を閉じた。 */\r
190 #define TPI_STATUS_SEEKFILE         0x0003  /**< 対象ファイルを検索している。 */\r
191 #define TPI_STATUS_BEGINPROCESS     0x0004  /**< 処理を開始した。 */\r
192 #define TPI_STATUS_INPROCESS        0x0005  /**< 処理中である。 */\r
193 #define TPI_STATUS_ENDPROCESS       0x0006  /**< 処理を終了した。 */\r
194 #define TPI_STATUS_TESTARCHIVE      0x0007  /**< 書庫を検査中。 */\r
195 #define TPI_STATUS_COPYARCHIVE      0x0008  /**< 書庫を移動/複製中。 */\r
196 /** @} c_process_common_status */\r
197 \r
198 /**\r
199  * @defgroup c_process_common_param パラメータコード\r
200  * TPI_MESSAGE_ASK が送信された時に、TPI_PROCESSINFO 構造体の uStatus に格納される値で、要求されているパラメータを示す値。\r
201  * @sa TPI_MESSAGE_STATUS\r
202  * @sa TPI_PROCESSINFO::uStatus\r
203  * @{\r
204  */\r
205 #define TPI_PARAM_PASSWORD          0x0001  /**< パスワード。 */\r
206 #define TPI_PARAM_NEXTVOLUME        0x0002  /**< 分割書庫の次の部分。 */\r
207 /** @} c_process_common_param */\r
208 \r
209 /**\r
210  * @defgroup c_callback_return コールバック関数の返し値\r
211  * コールバック関数の終了時に、返し値として指定し、処理の続行について指示する値。\r
212  * @sa TPI_PROC\r
213  * @{\r
214  */\r
215 #define TPI_CALLBACK_CONTINUE       TRUE    /**< 処理を続行する。 */\r
216 #define TPI_CALLBACK_CANCEL         0x1000  /**< 処理を中断する。 */\r
217 #define TPI_CALLBACK_SKIP           0x1001  /**< 現在の処理を行わず、次の処理を行う。 */\r
218 #define TPI_CALLBACK_UNSUPPORTED    0x1002  /**< 処理を無視した。不明な処理である。 */\r
219 /** @} c_callback_return */\r
220 \r
221 /**\r
222  * @defgroup c_file_attribute ファイル属性コード\r
223  * TPI_FILEINFO 構造体の dwAttribute に格納される、ファイルの属性を表す値。\r
224  * @sa TPI_FILEINFO::dwAttribute\r
225  * @{\r
226  */\r
227 #define TPI_ATTRIBUTE_READONLY          0x00000001 /**< 読み取り専用。 */\r
228 #define TPI_ATTRIBUTE_HIDDEN            0x00000002 /**< 隠しファイル。 */\r
229 #define TPI_ATTRIBUTE_SYSTEM            0x00000004 /**< システムファイル。 */\r
230 #define TPI_ATTRIBUTE_DIRECTORY         0x00000010 /**< ディレクトリ。 */\r
231 #define TPI_ATTRIBUTE_ARCHIVE           0x00000020 /**< アーカイブ。 */\r
232 #define TPI_ATTRIBUTE_ENCRYPTED         0x00004000 /**< 暗号化ファイル。 */\r
233 /** @} c_file_attribute */\r
234 /// @} constants\r
235 \r
236 // *****************************************************************************\r
237 /// @defgroup structures 構造体\r
238 /// @{\r
239 // *****************************************************************************\r
240 \r
241 #pragma pack(1)\r
242 /** 対応形式についての情報を格納する構造体。 */\r
243 typedef struct _TPI_tagFORMATINFO\r
244 {\r
245         bool            fArchive;           /**< 複数ファイル格納対応ならtrue */\r
246         bool            fComment;           /**< コメント付加対応ならtrue */\r
247         bool            fEncryptKeyFile;    /**< キーファイルによるデータ暗号化に対応しているならtrue */\r
248         bool            fEncryptPassword;   /**< パスワードによるデータ暗号化に対応しているならtrue */\r
249         bool            fEncryptHeader;     /**< ヘッダ暗号化に対応しているならtrue */\r
250         bool            fMMOptimize;        /**< マルチメディアファイル最適化対応ならtrue */\r
251         bool            fMultiVolume;       /**< 分割圧縮対応ならtrue */\r
252         bool            fSFX;               /**< SFX作成対応ならtrue */\r
253         bool            fSolid;             /**< Solid圧縮対応ならtrue */\r
254         short           sCompressLevelMin;  /**< 圧縮レベルの最小値 */\r
255         short           sCompressLevelMax;  /**< 圧縮レベルの最大値 */\r
256         short           sRecoveryRecordMin; /**< リカバリーレコードの最小値 */\r
257         short           sRecoveryRecordMax; /**< リカバリーレコードの最大値 */\r
258         wxString        szTypeName;         /**< 形式名 */\r
259         wxString        szSuffix;           /**< 拡張子。複数ある場合は;で区切る */\r
260         wxString        szEngineName;       /**< 内部エンジン名 */\r
261         wxString        szTPIName;          /**< TPI名 */\r
262         wxULongLong_t   llSupportedCommand; /**< 実装されているコマンドのフラグ */\r
263         wxULongLong     llTypeId;           /**< 一意の形式ID */\r
264         void *          pCustomInfo;        /**< 任意の情報を格納 */\r
265 }       TPI_FORMATINFO;\r
266 \r
267 /** 特定ファイルについての情報を格納する構造体。 */\r
268 typedef struct _TPI_tagFILEINFO\r
269 {\r
270         /** 属性 */\r
271         /** @sa c_file_attribute */\r
272         unsigned long   dwAttribute;\r
273         unsigned long   dwCRC32;        /**< CRC32 */\r
274         wxDateTime      tmAccess;       /**< 最終参照日時 */\r
275         wxDateTime      tmCreate;       /**< 作成日時 */\r
276         wxDateTime      tmModified;     /**< 最終更新日時 */\r
277         unsigned int    uDanger;        /**< セキュリティ警告 */\r
278         unsigned int    uOSType;        /**< 作成元OS */\r
279         wxULongLong     llPackedSize;   /**< 格納後のサイズ */\r
280         wxULongLong     llUnpackedSize; /**< 格納前のサイズ */\r
281         wxFileName      fnFileName;     /**< ファイル名 */\r
282         wxString        szStoredName;   /**< 格納された名前 */\r
283         wxString        szMethod;       /**< 格納メソッド */\r
284         wxString        szComment;      /**< コメント */\r
285         unsigned short  wCompressRatio; /**< 圧縮率 */\r
286         wxULongLong     llFileID;       /**< 一意のファイルID */\r
287         void *          pCustomInfo;    /**< 任意の情報を格納 */\r
288 }       TPI_FILEINFO;\r
289 \r
290 /** 書庫についての情報を格納する構造体。 */\r
291 typedef struct _TPI_tagARCHIVEINFO\r
292 {\r
293         bool            fSolid;             /**< Solid圧縮されているならtrue */\r
294         bool            fMMOptimize;        /**< マルチメディアファイルに最適化されているならtrue */\r
295         bool            fEncryptData;       /**< データが暗号化されているならtrue */\r
296         bool            fEncryptHeader;     /**< ヘッダが暗号化されているならtrue */\r
297         short           sCompressLevel;     /**< 圧縮レベル(0-9) */\r
298         short           sRecoveryRecord;    /**< リカバリーレコード(0-100) */\r
299         wxDateTime      tmAccess;           /**< 最終参照日時 */\r
300         wxDateTime      tmCreate;           /**< 作成日時 */\r
301         wxDateTime      tmModified;         /**< 最終更新日時 */\r
302         int             nSFXType;           /**< SFXの種類を表す一意の値 */\r
303         unsigned int    uOSType;            /**< 作成元OS */\r
304         wxULongLong     llFileSize;         /**< ファイルサイズ */\r
305         wxULongLong     llPackedSize;       /**< 格納後のサイズ */\r
306         wxULongLong     llReadSize;         /**< 読み込み済みサイズ */\r
307         wxULongLong     llUnpackedSize;     /**< 格納前のサイズ */\r
308         wxULongLong     llSplitSize;        /**< 分割サイズ */\r
309         wxFileName      fnArchive;          /**< ファイル名 */\r
310         wxString        szComment;          /**< コメント */\r
311         unsigned short  wCompressRatio;     /**< 圧縮率 */\r
312         TPI_FORMATINFO  fiInfo;             /**< 形式に関する情報を格納 */\r
313         void *          pCustomInfo;        /**< 任意の情報を格納 */\r
314 }       TPI_ARCHIVEINFO;\r
315 \r
316 /** 処理についての基本情報を格納する構造体。 */\r
317 typedef struct _TPI_tagSWITCHES\r
318 {\r
319         bool            fStoreDirectoryPathes;  /**< パス情報を格納するならtrue */\r
320         bool            fMakeSFX;               /**< SFXを作成するならtrue */\r
321         bool            fSolid;                 /**< Solid圧縮をするならtrue */\r
322         bool            fMMOptimize;            /**< マルチメディアファイルに最適化するならtrue */\r
323         bool            fEncryptHeader;         /**< ヘッダを暗号化するならtrue */\r
324         wxFileName      fnDestinationDirectory; /**< 出力先ディレクトリ */\r
325         short           sCompressLevel;         /**< 圧縮レベル(0-9) */\r
326         short           sRecoveryRecord;        /**< リカバリーレコード(0-100) */\r
327         wxULongLong     llSplitSize;            /**< 分割サイズ(0のときは分割しない) */\r
328         wxString        szPassword;             /**< パスワード */\r
329         wxString        szKeyFile;              /**< キーファイル */\r
330         wxString        szComment;              /**< コメント */\r
331         int             eArchiveType;           /**< 書庫形式を表す一意の数値 */\r
332         void *          pCustomSwitches;        /**< 任意の情報を格納 */\r
333 }       TPI_SWITCHES;\r
334 \r
335 /** 処理についての通知情報を格納する構造体。 */\r
336 typedef struct _TPI_tagPROCESSINFO\r
337 {\r
338         /** イベントコード。 */\r
339         /** @sa c_process_common */\r
340         unsigned int    uMessage;\r
341         /** 進捗状況コード。 */\r
342         /** @sa c_process_common_status */\r
343         unsigned int    uStatus;\r
344         TPI_FILEINFO    fiInfo;                 /**< 処理中のファイルに関する情報 */\r
345         wxULongLong     llProcessedSize;        /**< 処理済サイズ */\r
346         wxFileName      fnDestination;          /**< 出力先ファイル */\r
347         wxString        szParam;                /**< パラメータを格納 */\r
348         void *          pCustomInfo;            /**< 任意の情報を格納 */\r
349 }       TPI_PROCESSINFO;\r
350 \r
351 /// @} structures\r
352 \r
353 // *****************************************************************************\r
354 /// @defgroup callback コールバック関数\r
355 /// @{\r
356 // *****************************************************************************\r
357 \r
358 /** コールバック関数\r
359   * @param  _uMsg   処理コード。\r
360   * @param  _pInfo  処理コードにより異なる。\r
361   * @return コールバック関数の返し値。\r
362   * @sa c_process\r
363   * @sa c_callback_return\r
364   */\r
365 typedef int(__stdcall * TPI_PROC)(unsigned int _uMsg, void * _pInfo);\r
366 \r
367 /// @} callback\r
368 \r
369 #pragma pack()\r
370 \r
371 // *****************************************************************************\r
372 /// @defgroup functions API\r
373 /// @{\r
374 // *****************************************************************************\r
375 \r
376 #ifdef __cplusplus\r
377 extern "C"\r
378 {\r
379 #endif\r
380 \r
381 /** プラグインに関する情報を取得。\r
382  * @param  _uInfoId     取得する情報を示す数値(情報コード)。\r
383  * @param  _llSubOption 情報コードにより異なる。\r
384  * @param  _pPtr        結果を格納するバッファへのポインタ。\r
385  * @return エラーコード。\r
386  * @sa c_info\r
387  */\r
388 int __stdcall GetPluginInformation\r
389 (\r
390         unsigned int _uInfoId,\r
391         wxULongLong _llSubOption,\r
392         void * _pPtr\r
393 );\r
394 \r
395 /** 対応形式に関する情報を取得。\r
396  * @param  _fiInfo      取得した情報を格納するためのポインタ。\r
397  * @param  _bFirst      最初の形式から情報を取得する場合にはtrue。\r
398  * @return エラーコード。得られる情報がなくなった場合はTPI_ERROR_S_ENDOFDATAが返される。\r
399  * @sa c_info\r
400  */\r
401 int __stdcall GetFormatInformation\r
402 (\r
403         TPI_FORMATINFO * _fiInfo,\r
404         bool _bFirst\r
405 );\r
406 \r
407 /** プラグインを使用するための初期化を行う。\r
408  * @param  _szArcName   これから操作する対象となる書庫名。不明な場合はNULLを指定。\r
409  * @param  _llSubOption 書庫を作成する場合には、その格納形式IDを指定。それ以外の場合は0。\r
410  * @return エラーコード。\r
411  */\r
412 int __stdcall LoadPlugin\r
413 (\r
414         const wxString & _szArcName,\r
415         wxULongLong _llSubOption\r
416 );\r
417 \r
418 /** プラグインを解放する。\r
419  * @param  _pReserved   予約済み。現状では常にNULL。\r
420  * @return エラーコード。\r
421  */\r
422 int __stdcall FreePlugin\r
423 (\r
424         void * _pReserved\r
425 );\r
426 \r
427 /** プラグインが対応しているファイルかどうか確認する。\r
428  * @param  _szArcName   確認する対象となる書庫名。\r
429  * @param  _nFileCount  書庫に格納されているファイル数を格納するためのポインタ。情報が不要ならばNULLを指定。\r
430  * @return エラーコード。\r
431  */\r
432 int __stdcall CheckArchive\r
433 (\r
434         const wxString & _szArcName,\r
435         int * _nFileCount\r
436 );\r
437 \r
438 /** 書庫のハンドルを取得する。\r
439  * @param  _szArcName   操作する対象となる書庫名。\r
440  * @param  _hArchive    取得したハンドルを格納するためのポインタ。\r
441  * @return エラーコード。\r
442  */\r
443 int __stdcall OpenArchive\r
444 (\r
445         const wxString & _szArcName,\r
446         void * * _hArchive\r
447 );\r
448 \r
449 /** 書庫のハンドルを解放する。\r
450  * @param  _hArchive    操作する対象となる書庫ハンドル。\r
451  * @return エラーコード。\r
452  */\r
453 int __stdcall CloseArchive\r
454 (\r
455         void * _hArchive\r
456 );\r
457 \r
458 /** 書庫に格納されているファイルの情報を順に取得する。\r
459  * @param  _hArchive    操作する対象となる書庫ハンドル。\r
460  * @param  _fiInfo      取得した情報を格納するためのポインタ。\r
461  * @param  _bFirst      最初のファイルから情報を取得する場合にはtrue。\r
462  * @return エラーコード。得られる情報がなくなった場合はTPI_ERROR_S_ENDOFDATAが返される。\r
463  */\r
464 int __stdcall GetFileInformation\r
465 (\r
466         void * _hArchive,\r
467         TPI_FILEINFO * _fiInfo,\r
468         bool _bFirst\r
469 );\r
470 \r
471 /** 書庫の情報を取得する。\r
472  * @param  _hArchive    操作する対象となる書庫ハンドル。\r
473  * @param  _aiInfo      取得した情報を格納するためのポインタ。\r
474  * @return エラーコード。\r
475  */\r
476 int __stdcall GetArchiveInformation\r
477 (\r
478         void * _hArchive,\r
479         TPI_ARCHIVEINFO * _aiInfo\r
480 );\r
481 \r
482 /** 各種の書庫操作を行う。\r
483  * @param  _uCommand    書庫操作の種類を表すコマンドコード。\r
484  * @param  _swInfo      書庫操作に必要な情報を格納した構造体へのポインタ。\r
485  * @param  _szArcName   操作する対象となる書庫名。\r
486  * @param  _szFiles     対象ファイル名のリスト。\r
487  * @return エラーコード。\r
488  * @sa c_command\r
489  */\r
490 int __stdcall Command\r
491 (\r
492         unsigned int _uCommand,\r
493         TPI_SWITCHES * _swInfo,\r
494         const wxString & _szArcName,\r
495         const wxArrayString & _szFiles\r
496 );\r
497 \r
498 /** Command() 実行中に処理の進捗状況を送信するコールバック関数を指定する。\r
499  * @param  _prArcProc   コールバック関数へのポインタ。\r
500  * @return エラーコード。\r
501  */\r
502 int __stdcall SetCallbackProc\r
503 (\r
504         TPI_PROC _prArcProc\r
505 );\r
506 \r
507 #ifdef __cplusplus\r
508 }\r
509 #endif\r
510 \r
511 /// @} functions\r
512 \r
513 #endif /* __TPI_API_SPEC */\r