2006/12/21 (2006年12月 のアーカイブ)
Pin
InPin,OutPin の方はというとやっぱりPinっていう基底クラスがあってInPin, OutPin を派生するというのが、教科書的なやり方だろうな。 Pinはそれぞれ現在の値を持っていて、Set(float) Get(float) なんてメソドで扱えて、Connect(Pin *) なんていうメソドがあってPin間を接続するような感じ? 接続はInPin からOutPinに向けてだけ、とかでも良いかな?
class Pin {
public:
float Get(void);
void Set(float);
};
class InPin : Pin {
public:
bool Connect(OutPin*);
};
class OutPin : Pin {
};
で、値(float fVale とするか)をどこに置くかだけど、基底クラスにSet() Get()があるんで
class Pin {
float fValue;
public:
float Get(void) { return fValue; }
void Set(fValue f) { fValue=f; }
};
てしたいな。で、InPinは信号処理のメソド( Process() とか?)で接続先のPinから現在値をコピーする?それともInPinは接続先Pin へのポインタを持っていてそこから直接持ってくる?
綺麗なのは最初の方だけどパフォーマンスがどうかな? でもInPinにポインタを持つなら fValueなんて基底クラスにあるのは無駄じゃ。OutPinにだけあればいいや。でもそれだとGet() Set() も基底クラスにいらないな。 てか InPInにSet()はいらんだろ。ち、基底クラスが無駄じゃん。
なんて事を妄想しながら深みにはまるのだ。 実際の所、VST作るならパフォーマンス優先で考えたい。InPin と OutPinには基底クラスはなくてもいいのだ。
class InPin {
OutPin *in;
public:
float Get(void) { return in->Get(); }
void Connect(OutPin*opin) { in=opin; }
};
class OutPin {
float fValue;
public:
float Get(void) { return fValue; }
void Set(float f) { fValue=f; }
};
接続されてないInPinの事とかは今は考えない...
Posted by g200kg : 2006/12/21 00:43:20