すべてのクラスで同じでデータ型が異なるクラス インプリメンテーションが必要な場合があります。Model Composer では、AIE Class Kernel ブロックを使用して、クラス テンプレートを含むカーネルをインポートできます。kernel.h でクラス テンプレートを宣言する次の例を考えてみます。
kernel.h:
#ifndef _AIE_CLASS_KERNELS_H_
#define _AIE_CLASS_KERNELS_H_
#include <adf.h>
template<typename T, int N>
class MyKernel {
int m_count;
public:
MyKernel();
void myFunc(input_stream<T> *i1,
output_stream<T> *o1,
output_stream<int> *o2);
static void registerKernelClass()
{
REGISTER_FUNCTION(MyKernel::myFunc);
}
};
#endif
この場合、デフォルトのコンストラクター初期化子 m_count(N)
は、次の kernel.cpp コードに示すように、m_count
をテンプレート パラメーター N
で初期化します。
kernel.cpp:
#include "kernel.h"
template<typename T, int N>
MyKernel<T,N>::MyKernel()
: m_count(N)
{
}
template<typename T, int N>
void
MyKernel<T,N>::myFunc(input_stream<T> *i1,
output_stream<T> *o1,
output_stream<int> *o2)
{
put_ms(0, get_ss(0) * N);
++m_count;
writeincr(o2, m_count);
}
AIE Class Kernel を使用してクラス テンプレートを含むカーネルをインポートしたら、Function タブが表示されます。ここで、ユーザーが編集可能なパラメーターに適切な値を入力できます。Apply をクリックすると、AI エンジン クラス ブロックのインターフェイスがアップデートされます。
[Block Parameters] ダイアログ ボックスの Kernel Class タブで、カーネル クラス バリアントのテンプレート クラス宣言を確認します。Kernel Class タブでは、次の図に示すように、テンプレート タイプ パラメーター T の値と整数型のテンプレート非タイプ パラメーターを入力できます。
図 1. カーネル クラス テンプレート
重要:
- テンプレート タイプ パラメーターには、有効なウィンドウ、ストリーム、または RTP データ型を指定できます。
- テンプレート非タイプ パラメーターには、整数型の値のみがサポートされます。
- 非タイプ テンプレート パラメーターの指定には、MATLAB 変数を使用できます。