2006-07-01から1ヶ月間の記事一覧

member_access_traitsのテスト

今日も細かい修正とドキュメント書きです。 member_access_traitsのドキュメントとテストも追加しました。 http://hamigaki.sourceforge.jp/doc/html/member_access_traits.html http://hamigaki.sourceforge.jp/libs/type_traits/test/member_access_traits…

続 transform_iteratorは実装の詳細?

istream_line_iteratorとostream_iteratorのドキュメントも追加しました。 http://hamigaki.sourceforge.jp/doc/html/istream_line_iterator.html http://hamigaki.sourceforge.jp/doc/html/ostream_iterator.htmlistream_line_iteratorのドキュメントを書い…

transform_iteratorは実装の詳細?

昨日、今日と湯布院まで小旅行に行っていたので、作業はあまり進んでいません。 書きかけだったfirst_iteratorの関連型だけ整理しました。 http://hamigaki.sourceforge.jp/doc/html/first_iterator.html operator->()がoperator_arrow_proxy<X>を返す場合も、p</x>…

ICFPの古文書にトライ

C++

http://www.kmonos.net/wlog/63.html#_0214060725 経由で既にコンテストは終わってるけど、http://icfpcontest.org/task.shtml に挑戦してみました。 A collection of arrays of platters, each referenced by a distinct 32-bit identifier. と書かれていて…

operator_arrow_proxy

first_iteratorのドキュメントを書いていて、referenceが参照でない場合、pointerはどうなるんだろうと思って調べてみました。 pointerが必要になるのは、operator->()だけですが、 template<class T> struct operator_arrow_proxy { operator_arrow_proxy(const T& x</class>…

member_access_traits

メンバへのcv修飾伝播を模倣するmember_access_traitsを作りました。 http://hamigaki.sourceforge.jp/hamigaki/type_traits/member_access_traits.hpp namespace hamigaki { template<class T, class U> struct member_access_traits { typedef typename boost::remove_refere</class>…

constな型のメンバ型

C++

今日もドキュメント書きとバグ修正がメインです。 SourceForge.jp側でドキュメントを生成できるように環境を整備したので、多少楽になりました。 エクスポートして、ドキュメントをビルドして(これが時間がかかる&重い)、tarballを作って、持っていって、展…

wide_adaptorのクリッピング

Hamigaki.Audioのサンプルpcm_recordでラジオを録音して、vorbis_encoder_exampleでOggVoribisに変換後、ogg_playで再生してみました。 Winampで再生すると問題ないのに、ogg_playだとプチプチとノイズが入ります。 wide_adaptorのコードを見直すと、クリッ…

バラバラなコンセプト

Hamigaki.Audioの各クラスのドキュメントからモデルになっているコンセプトにリンクを張ってみました。 行き当たりばったりで作ってきたため、OptimallyBufferedが実装されていたりいなかったり、pcm_sink/pcm_sourceだけFlushableDeviceになっていたりと、…

models-sentence

形だけですが、Filter関連コンセプトのドキュメントを追加しました。 http://hamigaki.sourceforge.jp/doc/html/concepts.html Deviceのときと同じ方針で、Filter、MutliCharacterInputFilter、MutliCharacterOutputFilter、ClosableInputFilter、ClosableOu…

base64_decoder

base64_decoderの実装のためにRepositionalInputFilterのコンセプトを変更しました。 シグネチャは、 template<class Source> std::streamsize read_blocks(Source& src, CharT* s, std::streamsize n)で、nは要求するブロックサイズ、戻り値は読み込んだ文字数です。 これ</class>…

InputFilterのclose()

Base64デコーダーを作成していて2つほど問題が発生しました。 一つ目は、InputFilterのclose()です。close()のシグネチャは、 template<class Device> void close(Device& dev);なのですが、引数devの使い道が分かりません。 OutputFilterと違って、フィルタ内部に残った</class>…

arbitrary_pos_filter_facade

任意位置ストリームFilterを作成するarbitrary_pos_filter_facadeを追加しました。これに合わせて、arbitrary_positional_facadeはarbitrary_pos_device_facadeに変更しました。 arbitrary_pos_device_facadeとarbitrary_pos_filter_facadeはコードがほとん…

Compiler Status

Compiler Statusページもアップしました。 Ageの部分は自動で更新されるようになっています。 最初はBoostと同じようにSSIで試してみたのですが、うまく動かなかったのでcronで1時間に1回更新するようにしています。最近はRegression Testをサボっていたので…

SF.jpにプロジェクト登録しました

そろそろOCNのディスクスペースがヤバくなってきたので、SourceForge.jpにプロジェクト登録しました。 http://hamigaki.sourceforge.jp/プロジェクト ホームページにドキュメントを置いたので、ようやくオンラインで参照できるようになりました。 ソースコー…

multiple close

close()の調査をしていてビックリしました。 次のコードを見てください。 #include <boost/iostreams/chain.hpp> #include <iostream> namespace io = boost::iostreams; struct test_sink { typedef char char_type; struct category : io::output, io::device_tag, io::closable_tag {}; std::st</iostream></boost/iostreams/chain.hpp>…

base64_encode_sink

arbitrary_positional_facade::close()ができました。 class core_access { // これを追加 template<class RepositionalSink, class CharT> static void close_with_flush( RepositionalSink& sink, const CharT* s, std::streamsize n) { return sink.close_with_flush(s, n); } }; template</class>

疑問点の整理

arbitrary_positional_facade::close()とBase64のアダプタを作成してみて、一応動いているのですが、曖昧な点がいくつか見つかったので保留にしました。 以下、TODOリスト兼まとめです。判明次第埋めていく予定。 アダプタやフィルタのclose()で元のデバイス…

arbitrary_positional_facade::close()

arbitrary_positional_facadeはバッファリングすることで位置復元ストリームを任意位置ストリームとして扱います。このバッファはSinkがclose()された際に空でない場合がありえます。 オーディオストリームだけを考えると、 何もしない(バッファに残ったデー…

続 arbitrary_positional_facade

arbitrary_positional_facade::seek()も実装してみました。 が、何か変ですねぇ。位置復元可能ストリームの中途半端な位置(ブロックの途中)にシークする状況が想像できません。 read()やwrite()はBlockingの要件のためバッファリングが必要ですし、操作を繰…

arbitrary_positional_facade

位置復元可能ストリームを元に任意位置ストリームを生成するヘルパクラスを作成しました。

続 位置復元可能ストリーム再考

各デバイスを任意位置ストリームに修正しています。multiplexer/demultiplexerはアルゴリズムを変えることで簡単に任意位置ストリームにできました。 バッファリングにかかるコストも、「バッファが空かつブロックサイズの操作の場合はバッファを介さずに行…

位置復元可能ストリーム再考

id:Cryolite:20060709 さんのFilterのBlocking-Preserving関連。 似たような状況は位置復元可能ストリームでも起きます。(位置復元可能ストリームについては id:hamigaki:20060210 参照) 入出力は適切なバイト区切り(ブロック、フレーム)単位で行う必要があ…

MSDNのCD/DVDの片付け

重い腰をあげ、MSDNのCD/DVD(5年分)を整理しました。 一旦退会してしまったため、CDケースが4箱(入会時に2箱届く)あり、その大半がダブっている状態でした。 完全なダブリとベータ版等の不要なディスクを処分しました。 写真は破棄したディスク(約250枚)を積…

PlaySound

ドキュメントの量が増えるにつれて、ドキュメントのビルド時間も長くなりました。 ビルド中はWebを見たり、本を読んだりしているわけですが、気が付いたらビルドはとっくに終わっていたなんてこともしばしば、、、。 そこで、id:ir9Ex:20060705 さんの記事を…

私的コンセプト

コンセプトのドキュメント(とりあえず版)を追加しました。 今日の成果物 Boost.Iostreamsのコンセプトは、Boostのドキュメントのままだと少し変な感じです。 例えば、コンセプトOptimallyBufferedのドキュメントには、型Oのオブジェクトoに対して、 io::opti…

続 xinclude-scanner

id:y-hamigaki:20060706 の続きです。 XIncludeの依存関係はboostbook.jamのxinclude-scannerで行われています。 class xinclude-scanner : scanner { // 略 rule pattern ( ) { return "xi:include[ ]*href=\"([^\"]*)\"" ; } // 略 }単純なパターンマッチ…

xinclude-scanner

最近はドキュメント書きがメインなので、またBoostBookネタです。 BoostBookは<boostbook>をルートとする一つのXMLですが、通常は適当な単位でファイルを分割し、XIncludeで一つのツリーにまとめます。 BoostBookのスタイルシートを適用する際、bjamはXIncludeによるフ</boostbook>…

concept

Boostのドキュメントを探索していたところ、conceptのサポートを見つけました。 試しにoptimal_buffer_sizeのドキュメントを書いてみました。 <boostbook> <title>コンセプトのテスト</title> </boostbook>

boost.max.id.length

BoostBook(というかDocBook)はidを振っていない項目に対して、id326930.htmlのようなファイル名を自動生成します。 自動生成される名前は毎回変わるのでdiff等のツールと相性が良くありません。 大抵は、タグにnameやidを設定することで回避可能ですが、idの…