2011-03-01から1ヶ月間の記事一覧

mpl::switch_ に case と default が欲しい

つくりました。 これでだいぶ見やすくなったと思います。 #include <boost/mpl/switch.hpp> #include <boost/mpl/and.hpp> #include <boost/mpl/vector.hpp> #include <boost/mpl/string.hpp> #include <boost/mpl/range_c.hpp> #include <boost/mpl/always.hpp> #include <boost/mpl/modulus.hpp> #include <boost/utility/enable_if.hpp> #include "…</boost/utility/enable_if.hpp></boost/mpl/modulus.hpp></boost/mpl/always.hpp></boost/mpl/range_c.hpp></boost/mpl/string.hpp></boost/mpl/vector.hpp></boost/mpl/and.hpp></boost/mpl/switch.hpp>

mpl::switch_ で、FizzBuzz

やりました。 久々にメタメタして楽しかったです。 #include <boost/mpl/switch.hpp> #include <boost/mpl/print.hpp> #include <boost/mpl/and.hpp> #include <boost/mpl/vector.hpp> #include <boost/mpl/string.hpp> #include <boost/mpl/always.hpp> #include <boost/mpl/modulus.hpp> namespace mpl = boost::mpl; using mpl::_1; typedef mpl…</boost/mpl/modulus.hpp></boost/mpl/always.hpp></boost/mpl/string.hpp></boost/mpl/vector.hpp></boost/mpl/and.hpp></boost/mpl/print.hpp></boost/mpl/switch.hpp>

オレオレ switch case つくったよー

C++

つくりはじめてからだいぶ時間が経ってしまったんですが、ぐだぐだになってきたので、暫定版って事で。 #include <iostream> #include <string> #include <boost/lexical_cast.hpp> #include <boost/lambda/lambda.hpp> #include "switch_case.hpp" namespace sc = switch_case; std::string check(int n){ return sc::switch_(n%</boost/lambda/lambda.hpp></boost/lexical_cast.hpp></string></iostream>…

mpl::int_ の比較を行う

mpl::equal で比較を行っていて思いっきりハマってしまいました……。 mpl::equal_to を使用して、比較を行いましょう。 namespace mpl = boost::mpl; BOOST_MPL_ASSERT(( mpl::equal_to<mpl::int_<0>, mpl::int_<0> > )); BOOST_MPL_ASSERT_NOT(( mpl::equal_to<mpl::int_<2>, mpl::int_</mpl::int_<2></mpl::int_<0>…

gdi++.dll(Helium版)

gdi++.dll(Helium版) とは、先日紹介した GDI++ FreeType の派生の1つです。 使い方は、基本的に FreeType 版と同じです。 Helium 版だと日本語が綺麗に表示されるみたいなので、こっちにしよう。 id:eldesh さんコメントありがとうございます。 [参照] http…

:Unite file_rec で、テンプレートファイルを選択して挿入する

vim

とりあえず、既存の処理でどこまで出来るのか!に挑戦してみました。 [vim] " read let read = { \ 'is_selectable' : 1, \ } function! read.func(candidates)"{{{ for l:candidate in a:candidates call unite#util#smart_execute_command('read', l:candi…

colorscheme Solarized

vim script Solarized フォントも変えたので、colorscheme もちょっと変更。 今までは、dark 系を使っていたんですが、今回は light 系です。 目に優しいです。 [vim] set background=light let g:solarized_contrast="hight" let g:solarized_italic=0 colo…

Osaka−等幅 + GDI++ FreeType

えーそんな訳で、美しいフォントとして名高い?Osakaフォントを導入してみました。 以前も導入しようとしたんですが、なんか潰れてて汚かったんですが、アンチエイリアスが原因だったみたいで、GDI++ を使用する事で解決しました。 [vim] " フォント名に日本…

unite-kinds に action を追加する

vim

unite-kinds の action とは、Unite で、候補を選択時に キーを押した際に出るあれです。 ここでの挙動は、ユーザ側で簡単に追加する事が出来るらしいのでやってみました。 :read の処理を追加する場合はこんな感じです。 let read = { \ 'is_selectable' : …

unite-env

vim

つくりました。 github unite-env 環境変数からパスの切り出しが行いたかったので結局自作。 一応、github に上げてありますが、アンドキュメントでテストもろくにしていないので、動作の保障は致しかねます。 Linux系で動くか不明。 これで晴れて、unite-so…

Unite で、環境変数を候補として出力する

vim

unite-env でも書こうかと思ったんですが、unite-output を使用すれば簡単にエミュレートする事が出来ました。 [コマンド] :Unite output:echo\ system('set') これで、定義されている環境変数の一覧が候補として出力されます。 Windows 以外の場合は、'set'…

引数の有無が混同する関数オブジェクトの boost::result_of

次の関数オブジェクトで、boost::result_of を使用すると戻り値型がうまく取得出来ずに、コンパイルエラーになります。 struct object{ template<typename F> struct result; // 引数がない場合に呼んで欲しい template<typename F> struct result<F()>{ typedef int type; }; template<typename F> st</typename></f()></typename></typename>…

コンパイル時に型名を出力する

boost::mpl::print を使用すれば、コンパイル時に警告メッセージとして、型名を間接的に出力することが出来ます。 [ソース] #include <boost/mpl/print.hpp> #include <utility> template<typename T> void func(T){ typedef typename boost::mpl::print<T>::type hoge; } int main(){ typedef boost::mpl:</t></typename></utility></boost/mpl/print.hpp>…

SingleCompile.vim で、sbcl の設定

デフォルトの設定では、sbcl の設定が行われていません。 sbcl を SingleCompile.vim で使用する場合には、ユーザ側で定義を行う必要があります。 [_vimrc] " sbcl call SingleCompile#SetCompilerTemplate('lisp', 'sbcl', \'Steel Bank Common Lisp', 'sbc…

コマンドから、cl.exe でコンパイルする場合のライブラリパスの設定方法

はまったので覚書。 $cl /I"d:\boost" main.cpp /link /LIBPATH:"d:\boost\stage\lib" こんな感じ。 /MD や、/MT なんかのオプションは環境に合わせて設定してください。

Boost.Lambda で、switch case を行う

なにやら、boost/lambda/switch.hpp なるものがあったので試してみました。 [source] #include <iostream> #include <boost/range/irange.hpp> #include <boost/range/algorithm/for_each.hpp> #include <boost/lambda/switch.hpp> #include <boost/lambda/lambda.hpp> int main(){ namespace lambda = boost::lambda; boost::for_each(boost::iran…</boost/lambda/lambda.hpp></boost/lambda/switch.hpp></boost/range/algorithm/for_each.hpp></boost/range/irange.hpp></iostream>

cinder のアプリケーションを bjam を使用してビルドする

※ cinder 本体のビルドではありません。 そんな訳で、cinder を使用したアプリケーションのビルド設定を bjam を使ってガリガリ書きました。 ★環境 WindowsXP msvc 2010 WindowsSDK 7.1 cinder 0.8.2 ★jamroot.jam/project-config.jam [jamroot.jam] import …

Pyclewn で、GDB ノススメ☆

vim で簡単に GDB を使いたいでゲソよ!! と、いう訳で vim 上で、GDB を行うツール(プラグイン?)の Pyclewn を試してみました。 前身として、clewn というものもあるみたいですが、こちらは Windows では使えないみたいです。 Pyclewn と clewn の違い…

SingleCompile.vim から msvc でコンパイルを行う

さて、以前、SingleCompile.vim を紹介しましたが、その時に msvc でのコンパイルがうまくいかないと書きました。 これは、msvc に必要な環境が整っていないのが原因です。 通常であれば、vim の起動前に vsvars32.bat を読み込んで環境変数の設定を行うのが…