http://www.hi-ho.ne.jp/hawk/cpp.html