Hamigaki.System

とりあえず、Hamigakiライブラリ版system_errorを実装しました。
今日の差分


よく考えたらsystem_errorは既にC++0xのドラフトに入っていて、what()の実装例がBoostのそれとほぼ同じになっていました。
なので、データの持ち方としてはこの方法を採用しました。


また、system_errorをposix_errorとwindows_errorの二つに分離しています。
この二つを同じクラスで扱う必要はないと思いますし、WindowsのエラーコードをPOSIXのerrnoにマッピングさせるのは面倒なので、こうなっています。


あと、posix_errorとwindows_errorのベースクラスはexceptionにしました。
コンストラクタの第二引数でメッセージを設定できるようにしていますが、これはruntime_errorに渡すわけではなく、ポインタの保存しかしていません。
これは、

throw hamigaki::system::windows_error(ERROR_OUTOFMEMORY, "hoge()");

のように、文字列リテラルが渡されることを想定しているからです。
DLLから投げて、スタックの巻き戻し中にDLLがアンロードされたら多分マズイです。