2011-01-01から1年間の記事一覧

カレントで開いているウィンドウのバッファ名を出力する

こういう処理はあんまり慣れていないので結構時間がかかりました。 [ソース] " カレントのウィンドウ番号の範囲 " winnr("$") で最後のウィンドウ番号を取得する let winnrs = range(1, winnr("$")) " ウィンドウ番号からバッファ番号へ変換 let bufnrs = ma…

gcc 4.7 に Delegating constructors が実装

C++

されていたらしいので試してみました。 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 を組み合わせる

以前も似たような事をやったんですが、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.vim で FizzBuzz の出力

vim

ふと、思いついたのでやってみた。 本当は unite-fizzbuzz とか書こうと思ったんだけど、unite-source を書くのがめんどくさかったので、unite-output で…。 unite-output 便利ですね。 [コマンド] :Unite output:for\ i\ in\ range(1,1000)|echo\ i.'\:'.(i…

Sprout.Tuple で transform_view

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>…

Sprout でコンパイル時 FizzBuzz

って事でやってみました。 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】phoenix::progress_display【6日目】

これは Boost Advent Calendar 2011 6日目の記事です。 さて、個人的に3回目の Advent Calendar です。 Boost Advent は個人的に気になっている Boost.TTI や Boost.QVM について書こうと思ったんですが、時期的に今しかチャンスが無いのでネタに走ります。 …

Sprout で遊んでみた

C++

今や知らない人はいない空前絶後な超変態ライブラリ、Sprout をちょっと使ってみました。 とりあえず、簡単に itoa の実装でも。 ソースは下記の github にあります。 bolero-MURAKAMI / Sprout - github [ソース] #define SPROUT_CONFIG_SUPPORT_TEMPORARY_…

clang 3.0 でエラーメッセージがパワーアップ

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 がリリース

スケジュールより遅れましたが、無事に LLVM 3.0 がリリースされました。 ダウンロードはこちらから。 clang 3.0 で追加される C++11 の機能なんかはここやここら辺を参照して下さい。

【C++11 Advent Calendar 2011】ユーザ定義リテラル【1日目】

C++

これは C++11 Advent Calendar 2011 の1日目の記事です。 1日目の C++11 Advent Calendar 2011 は『ユーザ定義リテラル』ついて書きたいと思います。 出落ちなのは気のせいです。 もし間違っている記述があれば、ご指摘頂けると助かります。 [C++11 Advent C…

【Vim Advent Calendar 2011】Vim の開発環境【1日目】

vim

これは、Vim Advent Calendar 2011 の1日目の記事です。 [Vim Advent Calendar 2011について] 去年の Advent Calendar には Vim がなかったので、勢いで立てました。 たくさんの方にご参加いただきありがとうございます。 開始前に何とか25人集まりました! …

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日に延期していました(´・ω・`)