読者です 読者をやめる 読者になる 読者になる

きつねさんとおぼえる!Clang おかわりをC85で出します

f:id:sabottenda:20131221195429j:plain:h300

前回に引き続きClang本を出します。
タイトルは「きつねさんとおぼえる!Clang おかわり」です。
タイトル案を適当にネタで出したらそのまま通って驚愕しているところでございます。

前回はプラットフォームとしてのClangの機能を駆け足で説明しましたが、
今回もテーマとしては同じでLibClangとLibToolingについて重点的に説明しています。
前回購入した方でも十分新しい内容が入っていますので、ぜひ立ち寄って頂ければと思います。 3,4章のLibClangについては風薬が担当し、5章のLibToolingと全体の構成を柏木餅子(id:motipizza, @sui_moti)が担当しています。
表紙や挿絵(!)は矢上さん(@re_sonanz, web)にお願いしています。

LibToolingを使った代表的なツールであるclang-formatやclang-modernizeの紹介から始まり、
4章ではLibClangの中でも抽象構文木にフォーカスしてRubyバインディングを使って詳しく解説し、
5章でLibToolingを使ってclang-degraderというものを作成しながら解説するという内容になってます。

以下、頒布場所の詳細になります。部数制限等は特にありません。

毎回売り切れになってしまって申し訳なかったので今回は余らせる勢いで200部刷ってあります。
前回の「きつねさんとおぼえる!Clang」も50部刷りますので買い逃した方はぜひ両方ともご購入下さい。

  • はしがき
  • はじめに
    • 本書の構成
    • 本書の目的
    • 本書内の記載について
    • お断り
  • 環境構築とClang の使い方
    • 本章の概要と構成
    • 環境
    • インストール
      • ビルドに必要なパッケージのインストール
      • LLVM/Clang のビルド/インストール
      • パスの設定
    • ツールの種類と確認
      • clang
      • clang-check
      • clang-format
      • clang-modernize
  • LibClang AST の概要
    • Clang の抽象構文木
    • LibClang とは
    • LibClang における抽象構文木の構造
    • 抽象構文木の操作関数
      • インデックスと翻訳単位の操作
      • 翻訳単位とカーソル間の操作
      • ソース位置と物理ファイル位置間の操作
      • ソース位置とカーソル間の操作.
      • ソース位置とソース範囲間の操作
      • カーソル間の移動
      • カーソルの文字列表現
      • カーソルの種類
      • 型に関する操作
      • コメントの取得
  • LibClang チュートリアル
    • LibClang の言語バインディングについて
    • LibClang のクラスとRuby のクラスの対応
    • 翻訳単位を作成する
    • 抽象構文木を走査する
    • 注釈関数を作ってみる
    • ファイル位置を指定してカーソルを取得する
    • 定義と宣言を取得する
    • typedef された型を参照する
    • マクロ展開の情報を取得する
    • コメントを取得する
  • LibTooling おかわり!
    • まえおき
    • 復習しましょう
      • LibTooling ってなんだっけ?
      • 前回のおさらい
    • 今回は何するの?
    • リファクタリング情報をファイル出力する
      • YAML::Output で出力を試す
      • TranslationUnitReplacements に変更する
      • MatchCallback とNullptrDegrader の定義
      • main 関数とoutputRepacementsYAML の修正
      • コンパイルと実行
    • 指定した範囲のみ適用する
      • Degrader クラスとFixer クラスの修正
      • CommandLine ライブラリ
      • オプションのパース
      • コンパイルと実行
  • あとがき
  • 著者/関係者一覧