TB_BinGeneratorユーティリティの使用
TB_BinGeneratorは、BuiltInCategoriesに関連付けられたオブジェクトのデータなど、大規模なデータセットのストレージに使用される.binファイルと.csvファイルを更新するユーティリティです。デフォルトでは、TB_BinGeneratorはビルドプロセスから除外されています。除外を切り替えるには、TB_ROOT/Projects/CMakeLists.txtの最初の行をSET(ENV{GENERATION_MODE} 0)からSET(ENV{GENERATION_MODE} 1)に変更します。使用方法は簡単で、引数なしでユーティリティを実行するだけです。
TB_ExLabelUtilsの変更点
TB_ExLabelUtilsは、APIをほぼ同じに保ちながら、完全に再設計されました。
すべてのラベルは、TB_ExLabelUtilsバイナリの近くにあるCSVフォルダーに配置された個別の.csvファイルセットに保存されます。これらの値は、実行時でもいつでも変更できます。簡素化のため、また例でのパフォーマンスの問題を避けるため、各ラベルセットは最初のリクエスト時にキャッシュされます。したがって、ラベルがすでにリクエストされている場合、実行時の変更は現在のセッション中には有効になりません。
マイナーなAPI拡張は、関連するラベルを持つ列挙のリストを提示するOdBm::EnumsWithLabels::Enum列挙で構成されています。
- virtual bool OdBmLabelUtilsPE::isCommon(const OdBm::EnumsWithLabels::Enum) const;
ラベル値がBIMソースファイルのマクロ定義に基づいている場合はtrueを返します。それ以外の場合はfalseを返します。 - virtual bool OdBmLabelUtilsPE::hasValues(const OdBm::EnumsWithLabels::Enum) const;
PEが指定された列挙の値を返すことができる場合はtrueを返します。それ以外の場合はfalseを返します。
サンプルTB_ExLabelUtilsでは、isCommonはTB_ExLabelUtilsバイナリの近くにあるChecksums.txtファイルをチェックすることで評価されます。SHA1を使用して計算されたチェックサム値が.csvに適用されます。SHA1の実装はTB_ROOT/Include/Common/BmSHA1.hにあります。
組み込みオブジェクトのロードに関して:TB_ExLabelUtilsモジュールがロードされていない場合、関連する列挙(例えばBmCategoty.h)のラベルが共通である場合、またはラベルをロードできない場合(TB_ExLabelUtilsがfalseを返す場合)、バイナリに保存されているラベルが使用されます。
配布パック内のCSVフォルダーは、BIMルートフォルダーにあるCSVフォルダーのコピーです。
.binと.csvの一貫性
コンパイル時に、.csvまたは.binファイルの内容がマクロ定義を含むファイル(例えばBuiltInCategories.csvとBmBuiltInCategory.h)と一貫性がない場合、ビルドは失敗します。したがって、変更はマクロ変更とTB_BinGeneratorの実行を通じて行う必要があります。