アレイへ参照を含むコンストラクター - 2023.2 日本語

Vitis Model Composer ユーザー ガイド (UG1483)

Document ID
UG1483
Release Date
2023-11-15
Version
2023.2 日本語
アレイへの参照を引数として含むコンストラクターを宣言する次のような例を考えてみます。

fir.h

class FIR
{
    private:
        int32 (&coeffs)[NUM_COEFFS];
        int32 tapDelayLine[NUM_COEFFS];
        uint32 numSamples;
    public:
        FIR(int32(&coefficients)[NUM_COEFFS], uint32 samples);
        void filter(input_buffer<int32> & in, output_buffer<int32> & out);
        static void registerKernelClass()
        {
            REGISTER_FUNCTION(FIR::filter);
            REGISTER_PARAMETER(coeffs);
        }
};

fir.cpp

#include "fir.h"
FIR::FIR(int32(&coefficients)[NUM_COEFFS], uint32 samples)
: coeffs(coefficients)
{
    for (int i = 0; i < NUM_COEFFS; i++)
    tapDelayLine[i] = 0;
    numSamples = samples;
}
void FIR::filter(input_buffer<int32> & in, output_buffer<int32> & out)
{
    ...
}

メンバー変数 coeffs は、int32 (&)[NUM_COEFFS] 型です。コンストラクター初期化子 coeffs(coefficients) は、coeffs をクラス オブジェクトに外部で割り当てられているアレイへの参照に初期化します。coeffs メンバー変数がコンパイラにより割り当てられることを aiecompiler に通知するため、REGISTER_PARAMETER を使用して registerKernelClass() メソッド内にアレイ参照メンバー変数を登録する必要があります。アレイへの参照を含むコンストラクターが登録されていない場合、aiecompiler からエラーが返されます。