ir::GPDSPBufferInputNode class

バッファ入力ノードを表す具象クラス

GPDSPBufferInputNode クラスは, 設定されたバッファからデータを読み込むためのバッファ入力ノードを表す具象クラスです. バッファが設定されていないときは, 0.0 を出力します.

入力ターミナルは持たず, 1つの出力ターミナル "out" を持ちます.

番号入力出力
0-out

gpdsp ファイルでの記述例

<GPDSPBufferInputNode>
    <name>ノード名</name>
    <param>
        <length>入力バッファのサイズ</length>
        <interleave>データの間隔</interleave>
    </param>
</GPDSPBufferInputNode>

Base classes

class GPDSPOutputtableNode
出力ターミナルを持つノードを表す抽象クラス
class GPDSPRewindableNode virtual
巻き戻し可能なノードを表すインターフェースクラス
class GPDSPRefreshableNode virtual
リフレッシュ可能なノードを表すインターフェースクラス

Constructors, destructors, conversion operators

GPDSPBufferInputNode(void) explicit noexcept
コンストラクタです.
~GPDSPBufferInputNode(void) virtual noexcept
デストラクタです.

Public functions

GPDSPError setBuffer(GPDSPFloat const* buffer, int length, int interleave) noexcept
既存の入力バッファを参照, または, 新規の入力バッファを自動的に確保します.
GPDSPFloat const * getBufferReadonly(int* length, int* interleave) const noexcept
読み込み専用の入力バッファを取得します.
GPDSPFloat* getBufferWritable(int* length, int* interleave) noexcept
書き込み可能な入力バッファを取得します.
GPDSPError setPosition(int position) noexcept
入力バッファの操作位置を設定します.
int getPosition(void) const noexcept
入力バッファの操作位置を取得します.
bool isDelegate(void) const noexcept
入力バッファが既存の入力バッファへの参照であるかどうかを判定します.
GPDSPError fixate(void) virtual noexcept
出力ターミナルを1つ生成します.
GPDSPError prepare(void) virtual noexcept
演算前の準備をします.
GPDSPError process(void) virtual noexcept
演算を行います.
void rewind(void) virtual noexcept
入力バッファの操作位置を先頭に再初期化します.
void refresh(void) virtual noexcept
入力バッファの値を 0.0 に再初期化します.
int getCountO(void) const noexcept
出力ターミナルの個数を取得します.
GPDSPError setNameO(int index, std::string const& what) noexcept
出力ターミナルの名前を設定します.
GPDSPError getNameO(int index, std::string* what) const noexcept
出力ターミナルの名前を取得します.
GPDSPError getValueO(int index, GPDSPFloat* value) const noexcept
出力ターミナルの値を取得します.
int findNameO(std::string const& what) const noexcept
引数に指定された名前を持つ出力ターミナルを検索します.
void invalidate(void) virtual noexcept
出力の演算結果を無効化し, 再演算を要求します.

Protected functions

GPDSPError setCountO(int count, std::string const& what) noexcept
出力ターミナルの個数と名前を設定します.
GPDSPError setValueO(int index, GPDSPFloat value) noexcept
出力ターミナルの値を設定します.
GPDSPError appendO(std::string const& what) noexcept
引数に指定された名前を持つ出力ターミナルを追加します.
GPDSPError insertO(int index, std::string const& what) noexcept
引数に指定された名前を持つ出力ターミナルを挿入します.
GPDSPError removeO(int index) noexcept
出力ターミナルを削除します.
void clearO(void) noexcept
すべての出力ターミナルを削除します.

Function documentation

ir::GPDSPBufferInputNode::GPDSPBufferInputNode(void) explicit noexcept

コンストラクタです.

リソースを初期化します.

ir::GPDSPBufferInputNode::~GPDSPBufferInputNode(void) virtual noexcept

デストラクタです.

管理しているリソースを解放します.

GPDSPError ir::GPDSPBufferInputNode::setBuffer(GPDSPFloat const* buffer, int length, int interleave) noexcept

既存の入力バッファを参照, または, 新規の入力バッファを自動的に確保します.

buffer 引数に NULL 以外を設定すると, 既存の入力バッファを入力バッファとして参照します. このとき, length 引数, もしくは interleave 引数に 0 以下の値を設定するとこの関数は失敗します.

buffer 引数に NULL を設定し length 引数が 0 以下でないとき, length 引数と interleave 引数から適切な入力バッファのサイズを計算し, 自動的に入力バッファを確保します. このとき, interleave 引数に 0 以下の値を設定するとこの関数は失敗します.

buffer 引数に NULL を設定し length 引数が 0 以下のとき, 既存の入力バッファが設定されている場合は入力バッファの参照を解除し, 入力バッファが自動的に確保されている場合は入力バッファを解放します.

Parameters
buffer in 既存の入力バッファ (NULL 可能)
length in 入力バッファのサイズ
interleave in データの間隔
Returns
GPDSPERROR_OK 正常
GPDSPERROR_NO_MEMORY メモリが不足している
GPDSPERROR_INVALID_PARAM 不正なパラメータ

GPDSPFloat const * ir::GPDSPBufferInputNode::getBufferReadonly(int* length, int* interleave) const noexcept

読み込み専用の入力バッファを取得します.

戻り値に NULL が返却される場合でも length 引数と interleave 引数は書き換えられます.

Parameters
length out 入力バッファのサイズ (NULL 可能)
interleave out データの間隔 (NULL 可能)
Returns
NULL 入力バッファが設定されていない
その他 有効な入力バッファ

GPDSPFloat* ir::GPDSPBufferInputNode::getBufferWritable(int* length, int* interleave) noexcept

書き込み可能な入力バッファを取得します.

戻り値に NULL が返却される場合でも length 引数と interleave 引数は書き換えられます.

Parameters
length out 入力バッファのサイズ (NULL 可能)
interleave out データの間隔 (NULL 可能)
Returns
NULL 自動的に確保された入力バッファではない
その他 有効な入力バッファ

GPDSPError ir::GPDSPBufferInputNode::setPosition(int position) noexcept

入力バッファの操作位置を設定します.

Parameters
position in 設定する操作位置
Returns
GPDSPERROR_OK 正常
GPDSPERROR_INVALID_STATE 不正な状態
GPDSPERROR_INVALID_RANGE 範囲外のパラメータ

int ir::GPDSPBufferInputNode::getPosition(void) const noexcept

入力バッファの操作位置を取得します.

Returns 現在の操作位置

bool ir::GPDSPBufferInputNode::isDelegate(void) const noexcept

入力バッファが既存の入力バッファへの参照であるかどうかを判定します.

Returns
true 既存の入力バッファへの参照
false 入力バッファが設定されていないか自動的に確保された入力バッファ

GPDSPError ir::GPDSPBufferInputNode::fixate(void) virtual noexcept

出力ターミナルを1つ生成します.

Returns
GPDSPERROR_OK 正常
GPDSPERROR_NO_MEMORY メモリが不足している

GPDSPError ir::GPDSPBufferInputNode::prepare(void) virtual noexcept

演算前の準備をします.

Returns
GPDSPERROR_OK 正常 (準備を完了)
GPDSPERROR_INVALID_RANGE 範囲外のパラメータ

GPDSPError ir::GPDSPBufferInputNode::process(void) virtual noexcept

演算を行います.

何もしません.

Returns
GPDSPERROR_OK 正常 (演算を完了)