1 つのテンプレート パラメーターを特殊化し、ほかのパラメーターは変更できるテンプレートを作成するには、テンプレートの部分特殊化を使用できます。Model Composer では、AIE Class Kernel ブロックを使用して、部分特殊化を含むクラス カーネルをインポートできます。クラス class_a
が非タイプ テンプレート パラメーターで部分特殊化される次の例を考えます。
partial_specialization.h
#include <adf.h>
template<typename T,int N>
class class_a
{
};
template<typename T>
class class_a<T,2> {
int m_count;
T var;
public:
class_a(T q_var1);
void func_mem(input_stream<T> *i1,
output_stream<T> *o1,
output_stream<int> *o2);
static void registerKernelClass()
{
REGISTER_FUNCTION(class_a::func_mem);
}
};
関数 func_mem
は、registerKernelClass()
メソッドに登録されます。AIE Class Kernel ブロックを使用してカーネル関数をブロックとして Model Composer にインポートしようとすると、ブロックの [Block Parameters] ダイアログ ボックスの [Kernel Class] タブは次のようになります。
図 1. AIE Class Kernel ブロックの [Block Parameters] ダイアログ ボックス
クラスは、非タイプ テンプレート パラメーターを使用して部分特殊化されるので、[Kernel Class Template Parameters] の N パラメーターを編集することはできません。ただし、テンプレート タイプ パラメーターの値は、任意の有効なデータ型に変更できます。