C++ Boost

Boost.Python

Configuration


Introduction
Application Defined Macros
Library Defined Implementation Macros

Introduction

Boost.Python<boost/config.hpp> の中で幾つかのコンフィギュレーション用マクロを使用する。 同時にコンフィギュレーション用マクロはアプリケーションによって提供されることも意味する。 それらのマクロの文書化はここでなされる。

Application Defined Macros

Boost.Python を使うアプリケーションによって定義されるマクロがある。 もしダイナミックライブラリをカバーするために、C++ 標準規格の厳格な解釈を拡張するなら、 異なるライブラリのコンパイル時に (拡張モジュールと Boost.Python ライブラリ自身も含め) これらのマクロを違う値で使用することは ODR 違反であることに注意しなさい。 しかしながら、この特別な違反が探知される、または問題の原因となる C++ の実装を知らない。

Macro Default Meaning
BOOST_PYTHON_MAX_ARITY 15 引数の最大項数 arity。対象は関数、メンバ関数、 あるいはラップされたコンストラクタ (引数項 x1, x2,...Xn の記述で定義される Boost.Python 呼び出しのこと) である。
これは特に object::operator()(...)call_method<R>(...) のようなコールバックのしくみを含む。
BOOST_PYTHON_MAX_BASES 10 テンプレート引数の最大項数。 対象は、ラップされた C++ クラスの基底を定義するのに使われるテンプレートクラス bases<...>

Library Defined Implementation Macros

これらのマクロは Boost.Python で定義される。 これらは実装者の興味本位であり、新たなプラットフォームへのポーティングのための実装の細部である。

Macro Default Meaning
BOOST_PYTHON_TYPE_ID_NAME not defined もし定義された場合、 このプラットフォームでは動作しない境目を、 type_info の共有ライブラリの間の比較結果を使って示す。 言い替えれば、shared-lib-1 は typeid(T) を shared-lib-2 の関数に渡し、 それは typeid(T) と比較し、その結果、偽を返すかもしれない。 このマクロが定義された場合、Boost.Python は std::type_info オブジェクトディレクトリを利用するかわりに typeid(T).name() を比較のため利用する。

Revised 04 October, 2002

© Copyright Dave Abrahams 2002. All Rights Reserved.