C++

utf8everywhere.orgを読んで

UTF-8 Everywhere インターネットにおいてはそりゃあそうだろうと思いつつ読んでみたら、WindowsにおけるC++プログラミングの話でなかなか興味深かった。 要約すると、 UTF-16は固定長ではない UTF-8を使ってもパフォーマンスコストは無い というところか。 …

GCとiterator

Giraffe+ 0.6.5.899で、 get-cb.filtered(`c[c.isalpha]).flushがaccess violation。 get-cbはクリップボードの文字列を返す。filteredはfilter_iteratorのRangeを返す。flushの時点で、get-cbが返したオブジェクトがGCに開放されてる可能性がある。実際には…

boost::function_typesのマクロ設定による動作変化

VC++7.1と9で確認したboost::function_typesのマクロ設定による動作変化の表です。わけわからなかったから出力してみた。 解かったこと。 デフォルトでfastcallとかに対応しない 設定は追加的じゃない。一部に対応させると他が効かなくなる この2つのことか…

boost::function_typesのis_member_function_pointer追記

あと、メンバ関数にthrowが付くとおかしくなるみたいです。 #include <iostream> #include <boost/function_types/is_function_pointer.hpp> #include <boost/function_types/is_member_pointer.hpp> #include <boost/function_types/is_member_function_pointer.hpp> #include <boost/type_traits.hpp> using namespace std; using namespace boost;…</boost/type_traits.hpp></boost/function_types/is_member_function_pointer.hpp></boost/function_types/is_member_pointer.hpp></boost/function_types/is_function_pointer.hpp></iostream>

Boost 1.34

C++

ビルドして、使ってみて、気付いたこと、躓いたことが少しあったので書いておきます。 >bjam --toolset=msvc stage だけであっさりVC++7.1でビルドできました。以前みたいに環境変数とか、vc7_1とかいらなくなったみたいです。 注意する点としては、HDDを3GB…

ファイルを一行ずつ読む

C++

結論から。 ifstream f(file_name); BOOST_FOREACH(string const& line, make_istream_line_iterator_range(f)) { //処理... } C++でファイルを一行ずつ読む方法を検索すると、大抵はifstreamとstd::getlineとwhileを使ったものが出てくる。自分もずっとそう…

CMigemoクラス

以前触れたGiraffe+のMigemoオブジェクトの中身のCMigemoクラスもついでにsourceforgeのCVSに置いておきました。 CMigemo.h 必要なヘッダも同じディレクトリにあります。文字列をBoost.Rangeで扱ってるので別途Boostも必要です。

ShowMenu2の実装について

C++側はこんな感じです。 Object ShowMenu2(Context c) { CMenuListBox menu; CMenuListBox::Keymap keymap; BOOST_FOREACH(SLOT::value_type v, c.callee().proto->slot) { UINT mod, code; keycode::GetKeyModAndCode(v.first.str(), &mod, &code); keymap…