pcm_formatの分解
floatストリーム対応版で、一通りのサンプルとテストコードが動くようになりました。
意味のなくなったクラスや関数の削除、インタフェースの改善など、細かい調整中をしているところです。
今、悩んでいるのは、pcm_format::typeをpcm_formatから切り離すかどうかについてです。
pcm_format::typeはバイトストリームでのみ意味を持つため、floatストリームではpcm_formatを取得する関数を提供できません。
いくつかのアダプタクラスが、
pcm_format format() const;
というメンバ関数を要求しているのですが、実際にはtypeしか見ていないので、typeだけを取得するインタフェースを追加すべきなのか、pcm_formatのメンバをバラバラにして各値を取得するインタフェースをデバイスに持たせるべきなのかが悩み所です。
pimplイディオムを使っているので、あまりメンバ関数を増やすと転送関数の記述が面倒ですし。(Boost.PimplPointerのようにimplクラスにはデータだけを持たせるべきなのかも)
現状、floatストリームの一部のクラスが未初期化のpcm_formatを返してしまっていて、非常にマズいです。
意味的にpcm_formatを返すのは変な場合もあるので、一旦pcm_formatを分解してみます。