Configurator クラス
Configurator クラスはCCTに入力するための多岐に渡る関数を含んでいます。ほとんどの場合、クラスは QANonMSVSConfigurator
から継承するべきです。
メンバ変数
_generates_cip_includes
コンパイラインクルードファイルが read_includes
関数によって検索される場合、True に設定する必要があります。
詳細についてはfilter_init 関数 と filterの設定 を参照してください。
compiler_name
コンパイラバイナリの名前を取得します。これは、CCTで COMPILER_NAME
設定を入力するために使用されます。
conf
コンパイラに関する様々な情報を含む Configurator クラスのインスタンスです。このインスタンスを使用している後述の例を参照してください。
これは、compiler_name、defines、include_dirs、language
関数を間接的に実装するためにも使用されます。
_defines_dict
self.conf.defines
から生成される定義済みのコンパイラマクロの辞書です。これは、defines_dict
プロパティよりアクセスします。
オーバーライド可能な関数
以下の関数または、プロパティは所定のフィルタに対しオーバーライドが可能です。
target
target により返された文字列はCCTの TARGET の設定に使用されます。例えば、この関数は target の値として --chip
引数に対する設定を返します。
これは、定義済みのコンパイラマクロの値を使用します。
これは、コンパイラ名を使用します。
hierarchy
戻り値である文字列は、CCTで COMPILER_HIERARCHY
を指定するために使用されます。
user_visible_name
フィルタが初期化されたときに正確なコンパイラ名が不明である場合(フィルタが複数のコンパイラを扱うなどの理由で)、このプロパティがコンパイラ名を取得します。
通常は単純に self.compiler_name
を返します。Configurator でプロパティが宣言されていない場合、filter_init
関数に渡された名前が使用されます。
custom_intrinsic_types
size_t または、 ptrdiff_t などの型は多くの場合、特定の定義済みマクロを検索することで見つけることができます。見つからない場合、Configurator はこの関数を宣言しさらに複雑な演算を実行することができます。例:
def custom_intrinsic_types(self, intrinsic_types_dict):
debug("custom_intrinsic_types called " + self.language_standard_version)
if '__LP64__' in self.defines_dict:
intrinsic_types_dict['ptrdiff_t'] = 'long'
intrinsic_types_dict['size_t'] = 'unsigned long'
else:
intrinsic_types_dict['ptrdiff_t'] = 'int'
intrinsic_types_dict['size_t'] = 'unsigned int'
if '__cplusplus' not in self.defines_dict:
intrinsic_types_dict['wchar_t'] = 'unsigned short'
return intrinsic_types_dict
custom_size_map
一般的な戻り値:
{
"char": "__CHAR_BIT__",
"short": "__SIZEOF_SHORT__",
"int": "__SIZEOF_INT__",
"long": "__SIZEOF_LONG__",
"longlong": "__SIZEOF_LONG_LONG__",
"float": "__SIZEOF_FLOAT__",
"double": "__SIZEOF_DOUBLE__",
"ldouble": "__SIZEOF_LONG_DOUBLE__",
}
様々な型のサイズを所定の定義済みのコンパイラ変数に基づいた値に設定します。これらの値はCCTの -s 値の設定に使用されます。
custom_align
一般的には、アライメントは様々な型に対するサイズ設定から計算されます。この計算がコンパイラが期待するものと一致しない状況もあります。この関数はそういったときに使用します。 例えば、long long 型が実際にアライメント4である場合、以下の関数が宣言される可能性があります。
戻り値 0 は通常の計算が使用されるべきであることを示しています。
custom_parser_extensions
他のカテゴリに適合しないものすべてのリストを戻します。例えば、filter がヘッダファイルにコンパイラオプションを実装するためにこの関数を使用する(強制的にインクルードする)ときなど。
generate_headers
ヘッダを生成する必要がある場合に使用します。CCTの環境変数 QAC_CCT_ LOCATION
は cctgen.py script
を呼出すことによりディレクトリに設定されることに留意してください。
これは、ヘッダディレクトリを検索することに使用できます。