unnonouno このページをアンテナに追加 RSSフィード

2005-04-06

風邪か? 00:27 風邪か?を含むブックマーク 風邪か?のブックマークコメント

朝から鼻がつまってるし、頭痛が激しいし、気持ち悪い。かつては花粉症じゃなくて純粋に鼻炎だったのだが、どうにもこうにも、花粉症なっちゃったのか、風邪引いたのか。うーん、だるい。

車輪の再発明 00:27 車輪の再発明を含むブックマーク 車輪の再発明のブックマークコメント

とりあえずWindowsでのプロセス生成と標準入出力のつなぎ換えができたが、processの生成とかpipeとかboostに入ってればいいのにな、と思ったらこんなものが。

マジスカと思ったが、まだ議論中みたいですな。コンストラクタでプロセスを生成して、<<と>>で入出力すると。もうちょっとで作っちゃうところだった。危ない危ない。そういえば、Boost.Socketなんてのも議論されてるみたいですね。さて、議論にあがるくらいだから既存のものがあるのかと思ったら、リンクされてる。

まさにこんな感じだ。

それはそうと、wxWindowsって単にGUIを提供するだけじゃなくて、プラットフォーム依存な部分全般を作り込んでいるみたいだ。つまりは、スレッド生成やタイマーファイルシステムとかそういったあたり。ちゃんと調べればプロセス生成周りもちゃんとある。いかんせん、stringとかiostream周りも独自設計になっているあたり、ちょっと手を出しづらい。このあたり、標準ライブラリに全部統合されちゃってくれるとうれしいんだけどね。Boost.GUIとかなにすんだろ。

そういえば、OCamlのArgモジュールが使いやすいからC++移植しようなんて話がありましたが、これはいったい? こんなのあったっけ? Let's boostにも解説見あたらず。例のごとくかなりあれげなソースですね。この辺。

        desc.add_options()
            ("help", "produce help message")
            ("compression", po::value<int>(), "set compression level")
        ;

なるほど、add_options()が関数オブジェクトを返して、その関数オブジェクトはoperator()で再び関数オブジェクトへの参照を返すのか。うーん、なるほど。おもいつかんかった。

exec-stream 03:12 exec-streamを含むブックマーク exec-streamのブックマークコメント

こんな感じか。なかなか便利。

#include <iostream>
#include <exec-stream.h>
#include <string>

int main()
{
  try {
    exec_stream_t es("cat", "");
    es.in() << "hoge" << std::endl;
    std::string str;
    es.out() >> str;
    std::cout << "success:" << str << std::endl;
  } catch (std::exception const & e) {
    std::cerr << "error: "  <<  e.what()  <<  "\n";
  }
}

似たようなライブラリは他にもあるみたいですね。

そういえば、OCamlなら。。。もっと楽だ。unix.cmaと一緒にコンパイルしないといけません。

let in_c, out_c = Unix.open_process "cat" in
output_string out_c "hoge\n";
flush out_c;
let s = input_line in_c in
print_string s
トラックバック - http://d.hatena.ne.jp/u-no/20050406