Boost

boost::progress_display++

Boost.懇親会 #5 名古屋 http://partake.in/events/e9131e9c-0662-4179-bbd4-b0648909f921 でboost::progress_displayの発表をしてきました。 発表資料 http://www12.ocn.ne.jp/~dante98/progress_display.pptx ソースコード http://www12.ocn.ne.jp/~dante9…

BBv2の警告メッセージ抑制

Boost.勉強会で時間がなくて話せなかった「警告メッセージ抑制」について説明しておきます。 import path ; local broot = [ modules.peek : BOOST_ROOT ] ; local bdir = [ path.make $(broot) ] ; for local lib in graph mpi python regex { module Jamfi…

Boost.勉強会#3

Boost.勉強会#3でBoost.Buildについて発表しました。 発表資料 http://www12.ocn.ne.jp/~dante98/BoostBuild-pre.pptx サンプルコード http://www12.ocn.ne.jp/~dante98/zip/bbv2.zip 名前を言ってはいけないあのプログラミング言語のインタプリタ http://ww…

wave.state

まだBoost.Waveで引っ張ります。 Boost.Waveのインタラクティブモードには状態の保存/復帰機能があります。 この機能はcpp.cppのBOOST_WAVE_SERIALIZATIONの値を1に変えてビルドすることで利用できるようになります。 ただし、コンパイルエラーとロード処理…

wave.cfg

今日もwaveをいじってました。 waveをそのまま起動すると、インクルードディレクトリや事前定義マクロが設定されていないので、 コマンドライン引数で指定する必要があります。 ただ毎回設定すると面倒なので、設定ファイルを使った方がよいです。 既定では…

Boost.Waveシェル

颯爽と去っていくだけではアレなので、デバッガ上でwaveを動かしてみようと思ったのですが、 何気にwaveにインタラクティブモードがあったので、これで十分な気がしてきました。 C:\Boost>wave.exe -t - Wave: A Standard conformant C++ preprocessor based…

lexical_castと大域ロケール

lexical_castが流行っているみたいなので、飛行機の中でコードを読んでました。 素朴な実装だとstringstreamに挿入(<<)して抽出(>>)するだけですが、 既定でstringstreamに大域ロケールが吹き込まれるため大域ロケールの影響を受けて出力が変わってしまいま…

続・Boost.Coroutineについての補足

http://d.hatena.ne.jp/melpon/20091212/1260584012 発表者が既に書いてたので、未回答の箇所を補足。 pthreadでマルチスレッドな環境で使えるの? pthreadが特定の実装を指す言葉でもないので、すべての実装で動くかは保障できないです。 Hamigaki.Coroutin…

Boost.Coroutineについての補足

昨日のBoost.勉強会でBoost.Coroutineについていくつか質問があったので、補足しておきます。 Hamigaki.Coroutineのコードはすっかり忘れていたので、すぐに答えられなかったのでした。 self.exit()は必要なの? これはコルーチンの最後の結果を返せるときは…

1.39.0対応

Boost 1.39.0が出てたのでSVN trunkで再テストしました。 http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi/hamigaki/trunk/status/cs-win32.html?revision=1748&root=hamigaki 修正なしで全てpassしました。

endian.hpp on NetBSD

せっかくSourceForge.jpのコンパイルファームにNetBSD(x86)マシンがあるので、Hamigakiライブラリのビルドを試してみました。 で、Hamigaki.Charsetのテストでエンディアンが逆に判定されるという現象に遭遇しました。 問題の箇所はこうです。 template<> st…

続 ライセンス申請

申請どおり、SF.jpに「Boost Software License (BSL) 1.0」が追加されました。 「プロジェクト管理サマリ」の「ソフトウェアマップカテゴリの変更」から変更できます。

Boost 1.35.0リリース

ようやく出ました! http://www.boost.org/users/news/version_1_35_0 予定通りRC3がそのままリリースとなったようです。 トップページも緑を基調にしたものに変わっています。 http://www.boost.org/

続 BOOST_CYGWIN_PATH

Cygwin on Windows 2000 on VMwareでテストをやり直しました。 Windows 2000でもHamigaki.Bjamのbjam_testとglob_testでプロセスが暴走するので調べてみたところ、assert()に失敗していて、その異常終了時に暴走するのはCygwinかBoost.Testの問題みたいでし…

BOOST_CYGWIN_PATH

Cygwinで半年以上テストしていなくて、Boost1.34.1になってから初めてテストしました。 i18n対応の関係でWindows用の実装が既定で使われるようになっていることに今更気が付きました。 マクロの対応はこうです。 マクロ パス*1 API なし Windows Windows BOO…

ライセンス申請

http://d.hatena.ne.jp/uskz/20080317/p6 を読んでSourceForge.jpのライセンスにBSL追加してもらうの忘れていたので申請しておきました。 未だに本家が「Other/Proprietary License 」になっているので無理かもしれませんが。

Boost.Asio + Coroutine

まもなくBoost 1.35 RC1リリースということで、Boost.Asioを弄ってみました。 Boost.Asioの非同期メカニズムはよくできているんですが、処理待ちのたびにコールバックするためどうしても処理の流れが分かりにくくなります。 そこで、Hamigaki.Coroutineを使…

patch for NTFS symbolic links

MLでBoost.FilesystemにNTFSシンボリックリンクのサポートを追加する話が出てたので、取り急ぎHamigaki.Filesystemからポートしたものを送ってみました。 http://svn.boost.org/trac/boost/ticket/1681 Hamigaki.Filesystemはワイド文字非対応のままだったの…

ERRORLEVEL

bjamのbuild.batを見ると、「setlocal & endlocal」でERRORLEVEL*1を0にクリア、「set _error_=」で1にセットしているつもりのようですが、これ動きませんね。 OS setlocal & endlocal set _error_= 2000 影響なし ERROR_LEVEL=1 XP 影響なし ERROR_LEVEL=1 …

日本語ロケールでassertion failedになる件

昨日の日本語ロケールだとBoost.Xpressiveがassert落ちする件を調べてみました。 落ちるのはココです。 template<typename Char> struct cpp_regex_traits_base<Char, 1> { protected: void imbue(std::locale const &loc) { int i = 0; Char allchars[UCHAR_MAX + 1]; for(i = 0; i </char,></typename>…

Boost.Exception

ぎゃー、既にBoost.ExceptionにN2179が取り込んでありました、、、。 http://tinyurl.com/2bkojl エラー情報が大きくなりすぎた辺りから、rejectっぽいなぁと思って読んでませんでした。 boost::throw_exception()で投げるときにclone機能を追加するみたいで…

Boost License Finally OSI Approved

http://lists.boost.org/Archives/boost/2008/02/133103.php これでSourceForgeのライセンス一覧にも追加されるはず。 まだ本家にも追加されていないっぽいので様子見。 Google Code Searchにも追加されるといいんですけど。

bjamの日本語の扱いが酷い件

VC++9.0対応の関係でSVNのtrunkからBoostを取ってきて、久々にbjamをビルドしたんですが、なぜかコンパイラの診断メッセージが化けます。 で、ソースを眺めてみると、execnt.cにこんなコードを発見しました。 /* clean up non-ascii chars */ int i; for ( i…

Boostのインストール方法

HamigakiライブラリのドキュメントにBoostのインストール方法についての記述を追加しました。 http://hamigaki.sourceforge.jp/doc/html/installation.html あくまで、Hamigakiライブラリ用のインストール方法なので、Pythonの設定とかは無視しています。 こ…

Critical Bug in Function Library

ガイドラインを確認しに行ったら、いつのまにかこんなNewsが! December 19, 2007 - Critical Bug in Function Library Boost.Function in Boost 1.34.x has a bug that affects the construction of Boost.Function objects in a multi-threaded context. T…

列挙型のシリアライズ

game_character_classのシリアライズで、列挙型をシリアライズするのに一旦intにキャストしていたんですが、列挙型のまま直接シリアライズできることに今頃気が付きました。 ソースを見たらboost::is_enumで場合分けしてありました。 というわけで修正。 gam…

続 hamigaki::uuid::serialize()

Boost.Uuidのコードと見比べて、実装レベルをprimitive_typeすることで昨日の問題を解決できることに気が付きました。 #include <boost/serialization/level.hpp> BOOST_CLASS_IMPLEMENTATION(hamigaki::uuid, boost::serialization::primitive_type) としておくと、アーカイバがテキストの</boost/serialization/level.hpp>…

hamigaki::uuid::serialize()

だいぶ体調も回復したので、今日は少しコーディングできました。 action_game.exeのキャラクタ定義はBoost.Serializationを使って書き出そうと考えているので、hamigaki::uuidをBoost.Serializationに対応させました。 差分 最初に書いたコードはこうでした…

constなcoroutine

boost::functionと違って、boost::coroutines::shared_coroutineはoperator()が非constになっています。 コルーチンは明らかに状態を持っていて、operator()はその状態を変更するわけなので、直感的には正しく思えます。 しかし、shared_coroutineの名前の通…

circular_buffer

多分、pcm_sinkは動くようになったと思います。 今日の差分 Windows版の実装が頭にあったため、昨日はバッファのリストをぐるぐる回る形で実装していましたが、AudioUnitのコールバックに渡されるバッファのサイズが一定ではないようなので、普通のリングバ…