2011-01-01から1年間の記事一覧
こういう処理はあんまり慣れていないので結構時間がかかりました。 [ソース] " カレントのウィンドウ番号の範囲 " winnr("$") で最後のウィンドウ番号を取得する let winnrs = range(1, winnr("$")) " ウィンドウ番号からバッファ番号へ変換 let bufnrs = ma…
されていたらしいので試してみました。 gcc 4.7 のバイナリはここのものを使用しました。 [ソース] #include <iostream> struct vec3{ vec3(float x, float y, float z) : x(x), y(y), z(z){} vec3() : vec3(0.0f, 0.0f, 0.0f){} vec3(float f) : vec3(f, f, f){} floa</iostream>…
以前も似たような事をやったんですが、Boost.Phoenix と decltype の組み合わせで面白いことができますね。 [ソース] #include <memory> #include <iostream> #include <boost/mpl/int.hpp> #include <boost/mpl/string.hpp> #include <boost/phoenix.hpp> #include <boost/multi_index/mem_fun.hpp> struct disp_impl{ typedef void result_type; template</boost/multi_index/mem_fun.hpp></boost/phoenix.hpp></boost/mpl/string.hpp></boost/mpl/int.hpp></iostream></memory>
ふと、思いついたのでやってみた。 本当は unite-fizzbuzz とか書こうと思ったんだけど、unite-source を書くのがめんどくさかったので、unite-output で…。 unite-output 便利ですね。 [コマンド] :Unite output:for\ i\ in\ range(1,1000)|echo\ i.'\:'.(i…
Sprout 側で処理できるようにゴニョゴニョと拡張してみました。 [ソース] #define SPROUT_CONFIG_SUPPORT_TEMPORARY_CONTAINER_ITERATION #include <functional> #include <sprout/tuple.hpp> #include <sprout/string.hpp> template<typename Tuple, typename F> struct transform_view_tuple{ Tuple tuple; F func; }; namespace sprout{ </typename></sprout/string.hpp></sprout/tuple.hpp></functional>…
って事でやってみました。 counting_iterator が欲しくなりますね。 [ソース] #define SPROUT_CONFIG_SUPPORT_TEMPORARY_CONTAINER_ITERATION #include <sprout/algorithm/transform.hpp> #include <sprout/array.hpp> #include <sprout/string.hpp> #include <sprout/string/alias.hpp> #include <sprout/operation.hpp> #include <iostream> templa…</iostream></sprout/operation.hpp></sprout/string/alias.hpp></sprout/string.hpp></sprout/array.hpp></sprout/algorithm/transform.hpp>
これは Boost Advent Calendar 2011 6日目の記事です。 さて、個人的に3回目の Advent Calendar です。 Boost Advent は個人的に気になっている Boost.TTI や Boost.QVM について書こうと思ったんですが、時期的に今しかチャンスが無いのでネタに走ります。 …
今や知らない人はいない空前絶後な超変態ライブラリ、Sprout をちょっと使ってみました。 とりあえず、簡単に itoa の実装でも。 ソースは下記の github にあります。 bolero-MURAKAMI / Sprout - github [ソース] #define SPROUT_CONFIG_SUPPORT_TEMPORARY_…
clang 2.9 でも『もしかして:〜』という機能があったんですが、clang 3.0 になって更にパワーアップしたらしいです。 [エラーコード] typedef int Integer; int main(){ integer* i = 0; // Integer return 0; } [clang 2.9] main.cpp:6:1: error: use of u…
スケジュールより遅れましたが、無事に LLVM 3.0 がリリースされました。 ダウンロードはこちらから。 clang 3.0 で追加される C++11 の機能なんかはここやここら辺を参照して下さい。
これは C++11 Advent Calendar 2011 の1日目の記事です。 1日目の C++11 Advent Calendar 2011 は『ユーザ定義リテラル』ついて書きたいと思います。 出落ちなのは気のせいです。 もし間違っている記述があれば、ご指摘頂けると助かります。 [C++11 Advent C…
これは、Vim Advent Calendar 2011 の1日目の記事です。 [Vim Advent Calendar 2011について] 去年の Advent Calendar には Vim がなかったので、勢いで立てました。 たくさんの方にご参加いただきありがとうございます。 開始前に何とか25人集まりました! …
ふと、思いついたので書いてみた。 を 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 を使用して、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 だと execute が設定されていますが、個人的に insert の方が使い勝手がいいので変更してみます。 unite#custom_default_action 関数で、default action の変更が出来ます。 [vimrc] call unite#custom_default_action("vimshe…
SourceForge にあると Twitter で教えてもらったので覚え書き。 boost-docs - SourceForge Boost のリリースよりもちょっと遅れて出るらしい(1.48.0 のドキュメントはまだない。
'nrformats' に 'alpha' を追加することで、 や で英字の増減をすることが出来ます。 [vimrc] " alpha を追加 " :help nrformats set nrformats=alpha,octal,hex これが欲しかったんや!
知らなかったので覚え書き。 [gf] で新しいタブを開いてバッファに読み込みます。
>float とかどうするの? などと露骨にツッコまれてしまったので、User-defined literals を使って定義し直し。 なぜ気づかないんだ>わたし。 これで問題ない…はず。 [ソース] #include <type_traits> namespace detail{ constexpr std::size_t pow(std::size_t n, std:</type_traits>…
できたよー。 以前、Boost.Ratio でつくったこれを使いました。 とりあえず、bounded だけですが、Boost.ConstrainedValue を変更することなく小数が扱えると思います。 関連:Boost.ConstrainedValueのレビュー結果 - Faith and Brave - C++で遊ぼう [ソー…
前回の続き。 もうちょっと拡張し易いようにしてみました。 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 のタブ名はステータスラインと同様にフォーマットを変更する事が出来ます。 [vimrc] " タブ番号:バッファ名 " フォーマットはステータスラインと同じ set guitablabel=%N:%t [追記] オプション名が違っていたので修正。
一応、昨日の続きです。 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…
なんか前も書いたような気がしますが、関数名にパターンを記述してゴニョゴニョします。 [ソース] function! s:apply(expr, ...) let expr = a:expr."_".join(a:000, "_") return call(exists("*".expr) ? expr : a:expr, a:000) endfunction function! s:fa…
UST参加です。 本当は行きたかったんですけど(実は発表ネタも考えあったんだけど)結局行きませんでした…。 バイタリティが足りない。 と、いうことで感想とかを箇条書きで。 #ujihisa.vim 2 - togetter 開演前にチラッと写った URL の補完 どこから拾って…
『TLでチラッと見かけた要望が次の瞬間には実装されていた。何を言ってるのか わからねーと思うがry』 と、いうことで鬼のような速度で実装されていたので試してみました。 [『t』キーでツリー表示] vimfiler はじまってた。 [注意] 以前、書いた『vimfiler …
vimfiler と unite.vim の find アクションを利用して、ディレクトリ内のファイルを検索します。 [プラグイン] unite.vim vimfiler [外部ツール] Windows であれば、Unix系の find.exe が必要である。 find.exe [vimrc] " find の path を設定 let g:unite_s…
それ、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>…
整数であれば、template で受け取ることが出来るので、ちょっと試してみました。 とりあえず、手頃な多倍長整数型がなかったので st::array へと変換しています。 [ソース] #include <iostream> #include <array> template<typename Char> constexpr int ctoi(Char c){ return c - Char('0');</typename></array></iostream>…
Upcoming Releases : November 30th ― Release! 本日リリース予定だった llvm 3.0 ですが、リリースが30日に延期していました(´・ω・`)