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

Boost.Fusion から Boost.Variant を定義

ふと、思いついたので書いてみた。 を include すれば、Boost.MPL の Sequence として扱える。 [ソース] #include <boost/variant.hpp> #include <boost/fusion/include/vector.hpp> #include <boost/fusion/include/mpl.hpp> #include <boost/fusion/include/for_each.hpp> #include <boost/mpl/unique.hpp> #include <boost/mpl/placeholders.hpp> #includ…</boost/mpl/placeholders.hpp></boost/mpl/unique.hpp></boost/fusion/include/for_each.hpp></boost/fusion/include/mpl.hpp></boost/fusion/include/vector.hpp></boost/variant.hpp>

Boost.Asio で Web から画像を読み込んでくる

Boost.Asio を使用して、HTTP 通信で、画像の読み込みを行います。 ついでに読み込んだデータを OGLplus で描画とかしてみます。 [ソース] #include <vector> #include <GL/glew.h> #include <oglplus/gl.hpp> // OGLplus 0.5.0 以降だと near far を undef しておかないと動かない #undef near </oglplus/gl.hpp></gl/glew.h></vector>…

vimshell-history の default action を変更する

vim

vimshell-history は、default だと execute が設定されていますが、個人的に insert の方が使い勝手がいいので変更してみます。 unite#custom_default_action 関数で、default action の変更が出来ます。 [vimrc] call unite#custom_default_action("vimshe…

Boost ドキュメントの PDF 版

SourceForge にあると Twitter で教えてもらったので覚え書き。 boost-docs - SourceForge Boost のリリースよりもちょっと遅れて出るらしい(1.48.0 のドキュメントはまだない。

Vim の や で英字も増減させる

vim

'nrformats' に 'alpha' を追加することで、 や で英字の増減をすることが出来ます。 [vimrc] " alpha を追加 " :help nrformats set nrformats=alpha,octal,hex これが欲しかったんや!

gf で新しいタブを開く

vim

知らなかったので覚え書き。 [gf] で新しいタブを開いてバッファに読み込みます。

User-defined literals で小数から型を定義

>float とかどうするの? などと露骨にツッコまれてしまったので、User-defined literals を使って定義し直し。 なぜ気づかないんだ>わたし。 これで問題ない…はず。 [ソース] #include <type_traits> namespace detail{ constexpr std::size_t pow(std::size_t n, std:</type_traits>…

Boost.ConstrainedValue で小数を扱う

できたよー。 以前、Boost.Ratio でつくったこれを使いました。 とりあえず、bounded だけですが、Boost.ConstrainedValue を変更することなく小数が扱えると思います。 関連:Boost.ConstrainedValueのレビュー結果 - Faith and Brave - C++で遊ぼう [ソー…

Vim script で match 文 その2

前回の続き。 もうちょっと拡張し易いようにしてみました。 id:tyru さんの書き方に近いかな。 [ソース] function! s:equal(a, b) return a:a.equal(a:b) endfunction function! s:apply(expr, value) return a:expr.apply(a:value) endfunction function! s…

Vim でタブの表記を変更する

vim

Vim のタブ名はステータスラインと同様にフォーマットを変更する事が出来ます。 [vimrc] " タブ番号:バッファ名 " フォーマットはステータスラインと同じ set guitablabel=%N:%t [追記] オプション名が違っていたので修正。

Vim script で match 文みたいな構文

一応、昨日の続きです。 Vim script で match 文みたいな構文を書いてみました。 [ソース] function! s:match(...) let self = {} let self.key = string(a:1) let self.map = {} function! self.case(val, expr) let self.map[string(a:val)] = a:expr retu…

Vim script でパターンマッチ的な書き方

なんか前も書いたような気がしますが、関数名にパターンを記述してゴニョゴニョします。 [ソース] function! s:apply(expr, ...) let expr = a:expr."_".join(a:000, "_") return call(exists("*".expr) ? expr : a:expr, a:000) endfunction function! s:fa…

ujihisa.vim #2

vim

UST参加です。 本当は行きたかったんですけど(実は発表ネタも考えあったんだけど)結局行きませんでした…。 バイタリティが足りない。 と、いうことで感想とかを箇条書きで。 #ujihisa.vim 2 - togetter 開演前にチラッと写った URL の補完 どこから拾って…

vimfiler でツリー表示

vim

『TLでチラッと見かけた要望が次の瞬間には実装されていた。何を言ってるのか わからねーと思うがry』 と、いうことで鬼のような速度で実装されていたので試してみました。 [『t』キーでツリー表示] vimfiler はじまってた。 [注意] 以前、書いた『vimfiler …

vim でディレクトリ内のファイルを検索

vim

vimfiler と unite.vim の find アクションを利用して、ディレクトリ内のファイルを検索します。 [プラグイン] unite.vim vimfiler [外部ツール] Windows であれば、Unix系の find.exe が必要である。 find.exe [vimrc] " find の path を設定 let g:unite_s…

std::unique_ptr に関数のカスタムデリータを渡す

C++

それ、Boost.MultiIndex の global_fun 出できるよ!って事でやってみました。 [ソース] #include <boost/multi_index/global_fun.hpp> #include <memory> #include <iostream> namespace mi = boost::multi_index; void deleter(int* p){ std::cout << "delete" << std::endl; delete p; } int main(){ std::uniq</iostream></memory></boost/multi_index/global_fun.hpp>…

user-defined literals で多倍長整数型を定義

C++

整数であれば、template で受け取ることが出来るので、ちょっと試してみました。 とりあえず、手頃な多倍長整数型がなかったので st::array へと変換しています。 [ソース] #include <iostream> #include <array> template<typename Char> constexpr int ctoi(Char c){ return c - Char('0');</typename></array></iostream>…

llvm 3.0 のリリースが11月30日に延期

Upcoming Releases : November 30th ― Release! 本日リリース予定だった llvm 3.0 ですが、リリースが30日に延期していました(´・ω・`)

vimfiler で任意のソートを行う

vim

でファイルのソートを行うことが出来ます。 どの条件でソートで行うかは、unite.vim で選択を行います。 1.[ でソート] 2.[unite.vim から選択] 頭文字が大文字の場合は降順で、小文字の場合は昇順でした。 3.[ソート] unite.vim を使っている辺りがカッコイ…

Boost 1.48.0

Boost 1.48.0 がリリースされました。 Boost 1.48.0 リリースノート- boostjp Boost.Container 辺りを試してみたいですね。

汎用的なベクトルの at_c を考える

C++

考えました。 [定義] 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 で簡単にファイルやディレクトリに移動する

vim

注意 - vimfiler の表記が変わりました。 Windows の Explorer のように名前の『頭文字』でサクッと移動したかったので書いてみました。 [vimrc] autocmd FileType vimfiler nnoremap <buffer> / /\_^- \zs これで『/』キーで名前の頭文字で検索を行います。</buffer>

C++11 Advent Calendar 2011

C++

こちらも立てました。 C++11 Advent Calendar 2011 - ATND 今気づきましたが1日目に Vim と C++11 が被っていますね…。 まぁ両方書きます。 [関連] Boost Advent Calender 2011 - PARTAKE

Vim Advent Calendar 2011

vim

Vim Advent Calendar 2011 を立てました Vim Advent Calendar 2011 - ATND Vim への愛を語りましょう!

戻り値型を書かない関数定義

C++

\(^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>…

transform_if?

C++

と、いうものを Twitter で見かけたのでちょっと書いてみました。 transform_if の挙動としては、 cond == true の要素のみを関数に適用させる(range のサイズはそのまま) 要素をフィルタリングしてから関数に適用させる(filter + transform) と、いう処理…

ユーザ定義リテラルを使った FizzBuzz

C++

まぁ処理自体は、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>…

Boost.勉強会 #6 札幌

ATND:http://atnd.org/events/18252 togetter:http://togetter.com/li/210115 #6 回目は試される大地で Boost.勉強会が開催されました。 今回も UST 参加です。 発表資料とかはあとで追加する予定。 ☆Boost.Geometryに学ぶテンプレートライブラリの設計(@cpp…

gcc 4.7 にユーザ定義リテラルが実装されていた

C++

ついに!いつの間にか実装されていたみたいです。 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>

rvalue と lvalue の理解を深める

C++

なんとなく分かっていなかったので、改めて復習。 書かないとなかなか覚えないですね…。 [ソース] 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…