1.1 Tools.h++ の概要と特徴
Tools.h++ は、強力で豊富な活用範囲の広い C++ の基本クラスライブラリで、実質的にどんなアプリケーションの構築にも使用できるソフトウェアです。
Tools.h++ は業界の標準として、様々なベンダのコンパイラと一緒に出荷されています。世界中のユーザに好まれ、数多くのコンパイラやオペレーティングシステムに移植されています。Tools.h++ は、ほとんどの開発用プラットフォーム上で使用できます。
Tools.h++ の新バージョンは、標準 C++ ライブラリをもとに構築されています。このソフトウェアへ移行しやすいように、Tools.h++ には標準的なオブジェクト指向インタフェースが用意され、信頼性の高い上位互換性があります。標準 C++ ライブラリの承認に応じて、Tools.h++ も改訂される予定です。
Tools.h++ の新パッケージには、以下の機能が含まれています。
シングル、マルチバイト、ワイド文字の強力なサポート
RWCString クラスの演算子や関数を使ってシングルおよびマルチバイト文字列を操作したり、ワイド文字列用のクラスである RWWString を利用できます。両クラスとも、連接、比較、インデックス付け (境界チェックのオプションあり)、I/O、大文字と小文字の変換、剥ぎ取り、およびその他数多くの機能を持っています。.さらに、RWCSubStringおよび RWWSubStringクラスでは、抽出および部分文字列への代入ができます。RWCRegexpとRWCRExprクラスは正規表現のパターン検索に対応しています。また、RWCTokenizerおよび RWWTokenizer クラスはシングルとワイド文字列をそれぞれ別々のトークンに分解します。
拡張正規表現
これは、文字列内で情報の検索に使用できる優れたパターン一致法のツールです。.新しいTools.h++拡張正規表現の機能は、ANSI/ISO 標準 POSIX.2 (Portable Operating System Interface) の正規表現のサブセットであり、標準 C++ ライブラリが必要です。
日時を処理するクラス
.2 つの日付間の日数や、ある日付の曜日を計算できます。任意形式の日数や時間の読み込みや書き出し、またはその他の操作を実行できます。Tools.h++ により日時の操作が簡単になります。
国際化に対応
便利で使い方も簡単な RWLocaleクラスのフレームワークでソフトウェアを国際化したり、RWTimeZone クラスを使って時間帯や夏時間を操作できます。ライブラリ全体は完全に 8 ビットに対応しているため、どのような 8 ビットの文字セットととも共用できます。埋め込みヌルには完全に対応しています。
エンディアンストリーム
情報をバイナリストリームを使って、オペレーティングシステム間で情報を効率良く転送できます。情報元のオペレーティング環境のレコードを保持するエンディアンストリーム機構により、サイズまたはバイト順に関係なく、どのようなシステム上でもストリームを読み取ることができます。
マルチスレッド保証
マルチスレッドに対応しています。マルチスレッドオプションを付けてコンパイルすると、ライブラリはマルチスレッドシステム機能を使用します。これには十分な内部ロック機能があり、内部統合性が保持されます。詳しくはコンパイラに付属しているリリースノートを参照してください。
永続性のある格納
新バージョンのTools.h++には、さらに強化された格納機能があります。テンプレートベースコレクションを含むほとんどのTools.h++コレクションが、オブジェクトのポインタ関係を保持する同形永続性に対応しています。また、独自のクラスに同形永続性を実装することもできます。RWCollectable を継承するオブジェクトは多形永続性を持ちます。そのため、ポインタ関係を保持するだけでなく、オブジェクトの型を知らなくてもオブジェクトを復元する処理が可能になります。
テンプレートベースのクラス
標準 C++ ライブラリのコンテナクラスをもとにした 28 個の新しいまたは再設計されたクラステンプレートです。開発環境が標準 C++ ライブラリに対応している場合は、これらのクラスへのインタフェースを完全に使用できます。標準 C++ ライブラリがない場合のためには、Tools.h++に同じインタフェースのサブセットを持つテンプレートベースのクラスが用意されています。
汎用コレクションクラス
テンプレートに対応していないコンパイラを使用する場合のために、Tools.h++にはほとんどのコンパイラに含まれているヘッダファイル <generic.h> とC++ プリプロセッサを使用するテンプレート類のクラスが用意されています。これらの汎用クラスへのインタフェースは、テンプレートベースのクラスに似ており、簡単に移行することができます。
Smalltalk_likeコレクションクラス
Smalltalk-80 プログラミング環境をモデルにしたコレクションクラスの完全なライブラリです。これには、Set、Bag、Queue 、Stack、OrderedCollection、SortedCollection、Dictionary などが含まれています。
その他の機能
RWFileクラスにより、標準ファイル操作をカプセル化することができます。B ツリーディスク検索機能 (RWBTreeOnDisk) により、B ツリーを使用して、ディスクレコードに効率的なキー付きのアクセスを行います。ファイル領域マネージャ (RWFileManager) は、ファイル内の空き領域の割り当て、解放、および結合を行います。C++ の例外処理を利用した、完全なエラー処理機能も備えています。この他にもビットベクタ、仮想 I/O ストリーム、キャッシュ管理、および仮想配列などのクラスがあります。