2011-01-01から1年間の記事一覧
でファイルのソートを行うことが出来ます。 どの条件でソートで行うかは、unite.vim で選択を行います。 1.[ でソート] 2.[unite.vim から選択] 頭文字が大文字の場合は降順で、小文字の場合は昇順でした。 3.[ソート] unite.vim を使っている辺りがカッコイ…
Boost 1.48.0 がリリースされました。 Boost 1.48.0 リリースノート- boostjp Boost.Container 辺りを試してみたいですね。
考えました。 [定義] template<std::size_t N, typename T> typename T::value_type at_c(T const&); struct vec{ typedef float value_type; float x, y, z; }; vec v = {1.0f, 2.0f, 3.0f}; at_c<0>(v); // 1.0f at_c<1>(v); // 2.0f at_c<2>(v); // 3.0f 使い方はこんな感じ。 [at_c_</std::size_t>…
注意 - vimfiler の表記が変わりました。 Windows の Explorer のように名前の『頭文字』でサクッと移動したかったので書いてみました。 [vimrc] autocmd FileType vimfiler nnoremap <buffer> / /\_^- \zs これで『/』キーで名前の頭文字で検索を行います。</buffer>
こちらも立てました。 C++11 Advent Calendar 2011 - ATND 今気づきましたが1日目に Vim と C++11 が被っていますね…。 まぁ両方書きます。 [関連] Boost Advent Calender 2011 - PARTAKE
Vim Advent Calendar 2011 を立てました Vim Advent Calendar 2011 - ATND Vim への愛を語りましょう!
\(^o^)/ [ソース] #include <iostream> #include <boost/function.hpp> #include <boost/bind.hpp> static const auto plus = [](int a, int b){ return a + b; }; static const auto bind1st = [](boost::function<int(int, int)> f, int a){ return boost::bind(f, a, _1); }; int main(){ auto n = plus(1, 3); std::c</int(int,></boost/bind.hpp></boost/function.hpp></iostream>…
と、いうものを Twitter で見かけたのでちょっと書いてみました。 transform_if の挙動としては、 cond == true の要素のみを関数に適用させる(range のサイズはそのまま) 要素をフィルタリングしてから関数に適用させる(filter + transform) と、いう処理…
まぁ処理自体は、Boost.MPL で行っているんですが。 整数は template で受け取る事が出来るので、Boost.MPL を使用してコンパイル時に処理することが出来ます。 [ソース] #include <iostream> #include <type_traits> #include <string> #include <utility> #include <boost/mpl/string.hpp> #include <boost/mpl/eval_if.hpp> namespace mpl = boos</boost/mpl/eval_if.hpp></boost/mpl/string.hpp></utility></string></type_traits></iostream>…
ATND:http://atnd.org/events/18252 togetter:http://togetter.com/li/210115 #6 回目は試される大地で Boost.勉強会が開催されました。 今回も UST 参加です。 発表資料とかはあとで追加する予定。 ☆Boost.Geometryに学ぶテンプレートライブラリの設計(@cpp…
ついに!いつの間にか実装されていたみたいです。 C++0x/C++11 Support in GCC - User-defined literals バイナリはここら辺から落としてきました。 [ソース] #include <iostream> #include <type_traits> template<unsigned long long acc, char ...cs> struct binary_impl : std::integral_constant<unsigned long long, acc>{}; template</unsigned></unsigned></type_traits></iostream>
なんとなく分かっていなかったので、改めて復習。 書かないとなかなか覚えないですね…。 [ソース] struct X{}; void lvalue_f(X lvalue){} void lvalue_reference_f(X& lr){} void const_lvalue_reference_f(X const& clr){} void rvalue_reference_f(X&& rr…
OGLplus を使用したテクスチャの描画です。 OGLplus では、libpng で .png の画像ファイルを読み込むことが出来るので、今回はそれを使用します。 使用するためには予め libpng を導入しておく必要があります。 libpng 1.2.46 - http://www.libpng.org/pub/p…
vim script で遊ぶ時によく使う組み込み関数とか。 vimプラグインを作る場合だとまた違ってくると思います。 むしろ、そっちの方が誰かが書いてくれると嬉しいな(チラチラッ。 あと当然ながら詳細は help を参照してください。 ☆まえがき 関数の可変長引数 関数…
OGLplus では、OpenGL でエラーが発生した場合に、例外をスローします。 スローした例外から詳細な情報(ソースファイルの位置や OpenGLのAPIなど)を取得することが出来ます。 [ソース] #include <vector> #include <iostream> #include <GL/glew.h> #include <oglplus/gl.hpp> #include <oglplus/context.hpp> #include <oglplus/shader.hpp> #incl</oglplus/shader.hpp></oglplus/context.hpp></oglplus/gl.hpp></gl/glew.h></iostream></vector>…
OGLplus 0.7.0 またバージョンアップしたみたいです。 ペースが早い…。 HPのレイアウトもちょっと変わっていますね。 チュートリアルもいつの間にか出来ていたので、初めて使う場合はここら辺を読んでみるといいかも? そろそろリリースノートが欲しいところ…
OGLplus で Shader のコンパイルに失敗した場合、Comple() 時に例外(CompileError)が飛んできます。 [ソース] #include <vector> #include <iostream> #define GL_VERSION_4_1 1 #include <GL/glew.h> #include <oglplus/gl.hpp> #include <oglplus/context.hpp> #include <oglplus/shader.hpp> #include <GL/Glut.h> int main(int argc, char *argv[]){ n…</gl/glut.h></oglplus/shader.hpp></oglplus/context.hpp></oglplus/gl.hpp></gl/glew.h></iostream></vector>
実行時にシェーダファイルをリロードできるようにして遊んでみました。 [main.cpp] #include <vector> #include <GL/glew.h> #include <oglplus/gl.hpp> // OGLplus 0.5.0 以降だと near far を undef しておかないと動かない #undef near #undef far //#include <oglplus/all.hpp> #include <oglplus/context.hpp> #include <oglplus/buffer.hpp> #include </oglplus/buffer.hpp></oglplus/context.hpp></oglplus/all.hpp></oglplus/gl.hpp></gl/glew.h></vector>
というものをみかけたので C++ でやってみました。 条件演算子を使うとかいうトンチではない。 [ソース] #include <string> #include <iostream> #include <boost/lexical_cast.hpp> int main(){ std::string fizz[2] = { "", "Fizz" }; std::string buzz[2] = { "", "Buzz" }; for(int i = 1 ; i < 30 </boost/lexical_cast.hpp></iostream></string>…
が公開されたらしいです。 Boost 1.48.0 beta1 とりあえず Boost.Fusion の std::tuple アダプタを試してみました。 [ソース] #include <boost/fusion/include/for_each.hpp> #include <boost/fusion/adapted/std_tuple.hpp> #include <boost/fusion/include/make_fused.hpp> #include <boost/lambda/lambda.hpp> #include <iostream> #include <tuple> #inclu…</tuple></iostream></boost/lambda/lambda.hpp></boost/fusion/include/make_fused.hpp></boost/fusion/adapted/std_tuple.hpp></boost/fusion/include/for_each.hpp>
いつの間にか OGLplus がバージョンアップしていました。 0.6.0 はまだ正式リリースじゃないのかな? 最新版の OGLplus だと gcc 4.6.1 にも対応しているみたいです。Windows にはまだ対応していないみたいなので、ソースコードに手を加えないと Windows だ…
メモ化していないので実行速度は遅いですが。 [ソース] #include <boost/phoenix/core.hpp> #include <boost/phoenix/bind.hpp> #include <boost/phoenix/operator.hpp> #include <boost/phoenix/scope.hpp> #include <boost/function.hpp> #include <boost/range/irange.hpp> #include <boost/range/algorithm/for_each.hpp> #include <iostream> i…</iostream></boost/range/algorithm/for_each.hpp></boost/range/irange.hpp></boost/function.hpp></boost/phoenix/scope.hpp></boost/phoenix/operator.hpp></boost/phoenix/bind.hpp></boost/phoenix/core.hpp>
一時期流行ったアレ。 最初は、Boost.Thread を使った sleep sort を書こうと思っていただけなんですが、気がついたら Boost.Phoenix でガシガシ書いていました。 [ソース] #include <boost/thread.hpp> #include <boost/phoenix.hpp> #include <boost/function.hpp> #include <boost/typeof/typeof.hpp> #include <iostream> int main(){ namespace phx = </iostream></boost/typeof/typeof.hpp></boost/function.hpp></boost/phoenix.hpp></boost/thread.hpp>…
っていうのを以前 Twitter で見かけたので自分でもやってみました。 [vimrc] " after/ftplugin/{&filetype}.vim ファイルを開く " ディレクトリは各環境にあわせて設定 let $AFTER_FTPLUGIN = $BUNDLE_ROOT."/after/ftplugin" nnoremap <silent> <Space><CR> :execute ":e ".$AF</cr></space></silent>…
Vim を使うなら『これぐらいは入れておいたほうがいい』っていうプラグインの紹介です。 どちらかといえば初心者向けな感じで、なるべく汎用的に使えそうなプラグインを選んでみました。 しかし、正直、初心者向けにしては数が多かったかも知れない…。 0.各…
を Boost.MPL で。 [ソース] #include <boost/mpl/print.hpp> #include <boost/mpl/vector_c.hpp> #include <boost/mpl/range_c.hpp> #include <boost/mpl/modulus.hpp> #include <boost/mpl/copy.hpp> #include <boost/mpl/copy_if.hpp> #include <boost/mpl/not_equal_to.hpp> #include <boost/mpl/back_inserter.hpp> #include…</boost/mpl/back_inserter.hpp></boost/mpl/not_equal_to.hpp></boost/mpl/copy_if.hpp></boost/mpl/copy.hpp></boost/mpl/modulus.hpp></boost/mpl/range_c.hpp></boost/mpl/vector_c.hpp></boost/mpl/print.hpp>
いい加減、\ → / への変換を手打ちするのは疲れたのでキーマップ。 [vimrc] " \ から / へ置換 vnoremap <silent> <Leader>/ :s/\\/\//g<CR>:nohlsearch<CR> nnoremap <silent> <Leader>/ :s/\\/\//g<CR>:nohlsearch<CR> ふぅ、これですっきり。</cr></cr></leader></silent></cr></cr></leader></silent>
oglplus/001_triangle.cpp をベースにして複数のポリゴン描画を行ってみました。 [ソース] #include <vector> #define GL_VERSION_4_1 #include <GL/glew.h> #include <oglplus/gl.hpp> //#include <oglplus/all.hpp> #include <oglplus/context.hpp> #include <oglplus/buffer.hpp> #include <oglplus/vertex_attrib.hpp> #include </oglplus/vertex_attrib.hpp></oglplus/buffer.hpp></oglplus/context.hpp></oglplus/all.hpp></oglplus/gl.hpp></gl/glew.h></vector>
Vim のコマンドから直接起動してもいいのですが、それだと GUI アプリケーションが終了するまで、Vim を操作することが出来ないので、open-browser.vim を使用して起動させてみたいと思います。 [プラグイン] open-browser.vim [vimrc] " 実行ファイルを呼び…
OGLPlus に関してはここら辺を参照して下さい。 OGLplus はまだ Linux しかサポートされていませんが、無理やりがんばって Windows で動かしてみました。 glew が使える環境であれば多分問題ないはず…。 [手元の環境] WindowsXP MinGW gcc-4.5.2 OGLPlus 0.4…