C++

Boostで抽象構文木を作ってllvm言語に変換してみた

Boost.Variant、Boost.Spirit.Qi、Boost.Spirit.Phoenixを使って簡単な中置記法の計算するための抽象構文木(AST)を作って、そのASTをllvm言語に変換するというのを作ってみました。コード書き殴り。 BoostでASTが割とすっきりと書け、そこからllvm言語に変…

X11 extensionsのXRandRでディスプレイの名前と使用できる解像度とリフレッシュレートを取得してみる

man見たりしたけど、XRRScreenResourcesとかが見当たらなかったのでX11/extension/Xrandr.hの転載をのせつつメモ。 XRandRのバージョンが1.2以上なら使えるはずです。 準備 以下のヘッダをインクルードします。 #include <X11/extension/Xrandr.h> まずXRRGetScreenResourcesを使って</x11/extension/xrandr.h>…

BOOST_USE_WINDOWS_H

windows.hとBoost.Chronoを同時に使うとboost/detail/winのファイルで次のような警告が出ることがあります。(以下の警告はgccのものです。) warning: declaration of 'void boost::detail::win32::GetSystemTimeAsFileTime(boost::detail::win32::FILETIME…

いまさらVariadic Templatesをまとめてみる

C++

この記事はC++ Advent Calendar 2012の13日目です。 Variadic Templatesとは C++11ではテンプレートで"."を3つ付けることが出来るようになりました、 こんな感じで。 template <class... Ts> これで何が出来るのかというと、0個以上の任意のテンプレート引数を受け取れる</class...>…