RSS Twitter Facebook

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