TPI:TPI

提供: TPIProject
移動先: 案内検索

TPIについて

TPIは広範な書庫操作を行うためのプラグイン仕様です。クロスプラットフォームでの動作のためにベースにはwxWidgetsを採用し、一般的な仕様とすることを目指しますが、実質的にはLycheeで利用するためのものです。従って、この仕様は完成版ではなく、Lycheeの動作を円滑にするために予告なしに仕様を変更することがあります。また、TPIプロジェクトにおいて実際に開発される予定のTPIプラグインは、圧縮エンジンを内包するものではなく、既存のプラグイン仕様やライブラリに対するラッパーとなります。

特長

  • wxWidgetsを採用し、現段階ではWindows/Linuxの双方で動作することを目的とします。
  • 書庫に対する高度な操作を仕様として実装します。
  • プラグインへのリンクは動的リンクを主眼としています。複数のTPIを使用する場合、静的リンクはできません。
  • ダイアログ、エラーメッセージ、レジストリの参照などをアプリケーションが行うべき部分として排除します。

策定済みの仕様

  • 書庫の作成、SFXと通常の書庫の相互変換。
  • 書庫からの展開及び部分展開、ファイルの削除。
  • 書庫の検査、修復。
  • 書庫へのファイルやディレクトリの追加。
  • 書庫作成時の分割、リカバリレコードの付加、コメントの付加などの設定。
  • パスワードやキーファイルによる暗号化/復号化。
  • 形式に関する情報の取得。
  • コールバック関数によるパスワード要求や次のボリュームの取得。
  • ファイルの上書き確認を通知するメッセージ。

未策定仕様

  • TPIからの設定項目の取得と、TPIへの設定項目の送信を行うAPI。

SVN Repository

commonディレクトリ以下に含まれるファイルがTPI仕様に関連します。

handle/TPIHandle.cpp,handle/TPIHandle.h 
外部アプリケーション(主としてLychee)からTPIを円滑に読み込むためのクラスです。
header/plugin.h 
TPIの仕様に基づいて定数、構造体、APIを定義しています。
header/plugin-extra.h 
plugin.hを補完するファイルです。必須ではありません。
library/library.cpp, library/library.h 
複数のTPIで共用する関数をまとめたファイルです。必須ではありません。
library/xmldoc.cpp, library/xmldoc.h 
複数のTPIで共用するXML関連の関数をまとめたファイルです。必須ではありません。

仕様書

TPI reference manualが仕様書です。

ソースからは、Doxygenでsrc/common/header/Doxyfileを指定するとこの仕様書を生成できます。src/common/headerディレクトリでmakeするのが簡単です。

開発中のTPI

次のTPIを現在開発しています。なお、7zArc, calLibrary, cuiWrapperでは共通の仕様に基づくXMLファイルを利用しており、その仕様はschema.xsdに記述されています。

TPI Platform Description
calLibrary Windows 統合アーカイバライブラリ用のTPIです。
calLibrary.xmlに記述された設定を基にしてライブラリを読み込みます。
spiLibrary Windows Susie Plug-in用のTPIです。spiLibraryと同じディレクトリにあるspiファイルを読み込みます。
00AMプラグインのみに対応しています。
xpiLibrary Windows XPIとSusie Plug-inを用いて、画像ファイルの変換を行うTPIです。
xpiLibraryと同じディレクトリにあるxpi/spiファイルを読み込みます。SPIは00INプラグインのみに対応しています。
cuiWrapper Windows, Linux コマンドラインベースの実行ファイルに対応するTPIです。
cuiWrapper.xmlに記述された設定を基にして、アプリケーションの出力から情報を取得し、書庫の操作を行います。
7zArc Windows, Linux 7-zip(7z.dll/7z.so)に対応するTPIです。
7zArc.xmlに記述された設定によって対応形式などを変えることができます。
eggArc Windows UnEGG32.dllに対応するTPIです。
rarArc Windows, Linux unrar.dll/libunrar.soに対応するTPIです。
sqxArc Windows sqx20u.dllに対応するTPIです。

また、以下のTPIの開発を検討しています。あくまでも検討中です:)

TPI Platform Description
b2eLibrary Windows, Linux b2eスクリプト用のTPIです。
ampLibrary Windows Winampプラグイン用のTPIです。音楽ファイルの変換を行います。
wcxLibrary Windows TotalCommanderプラグイン用のTPIです。
aceArc Windows UnAceV2.dllに対応するTPIです。
cabArc Windows, Linux cab形式に対応するTPIです。
zipArc Windows, Linux Info-zipのzip形式用ライブラリに対応するTPIです。