Python

Python で iTunes Music Library.xml を読み込む

「iTunes Music Library.xml をパースしたい」みたいな話が出ていたので簡単にやってみた。 [ソース] # -*- coding: utf-8 -*- import plistlib file = "iTunes Music Library.xml" xml = plistlib.readPlist(file) # プレイリストの一覧を出力 print "=== …

libclang の Python binding を使用する 〜 詳細な型名の取得 〜

前回はカーソル位置の型名を取得する方法について書きました。 今回は詳細な型名を取得する方法について書きます。 さて、前回使用した方法では例えば以下のように typedef されている場合、typedef した型名を取得します。 typedef int hoge; hoge h; // h …

libclang の Python binding を使用する 〜 型名の取得 〜

前回は Type について簡単に書きました。 今回はその Type の名前を取得する方法について書きます。 [注意] 今回使用している clang_getTypeSpelling なのですが、Clang 3.3 以前の python binding を使用している場合はユーザ側で動的ライブラリから呼び出…

libclang の Python binding を使用する 〜 Type 編〜

前回からすっかり時間があいてしまいましたがまだ続けますよ。 決して忘れていたわけではない 前回までは Cursor について書いていましたが、今回は型情報について簡単に書きます。 Cursor からその位置の型情報を取得する事ができます。 [ソース] # -*- cod…

libclang の Python binding を使用する 〜 referenced 編〜

前回から少し時間があきました。 前回は definition に関する記事を書きました。 今回は referenced について書きます。 referenced は前回紹介した definition と似ており定義位置を返します。 definition との違いは definition が宣言のみの場合は None …

Ruby と Python を少し使ってみての感想

去年は Ruby、年末辺りから Python を少し使っていたのでそれぞれの個人的な感想をまとめてみるなど。 両方共ガッツリと学習したわけではないのでボケてるかもしれませんが。 [Ruby] Lingr の bot をつくるときに使用 Sinatra + heroku で Web サーバの運用 …

libclang の Python binding を使用する 〜 definition 編〜

前回は Cursor に関する記事を書きました。 次は型情報について書く予定だったのですが、先に definition 周りについて書きます。 さて、定義位置は Cursor の get_definition() メソッドを使用して取得する事ができます。 [ソース] # -*- coding: utf-8 -* …

libclang の Python binding を使用する 〜 Cursor 編〜

前回は SourceLocation に関する記事を書きました。 今回は Cursor について簡単に書きます。 Cursor は指定したファイル位置の情報を取得する事ができます。 [ソース] # -*- coding: utf-8 -* import clang.cindex from clang.cindex import Cursor # sourc…

libclang の Python binding を使用する 〜 diagnostics 編〜

前回は unsave_files に関する記事を書きました。 今回は diagnostics について簡単に書きます。 diagnostics はパースした結果のエラーや警告などを取得する事ができます。 [ソース] import clang.cindex # source code source = """\ struct X{ const int …

libclang の Python binding を使用する 〜 unsave_files 編〜

前回は Index に関する記事を書きました。 今回は存在しないファイルをパースする方法について書きます。 Vim などを使用しているとわかりやすいんですが、ファイルは存在していないけど編集中のソースファイルをパースしたい、という事はあると思います。 …

libclang の Python binding を使用する 〜 Index 編〜

前回は Config に関する記事を書きました。 今回は Index 周りについて簡単に書きます。 libclang では Index を使用してソースコードをパースし、TranslationUnit の生成を行います。 [test.cpp] struct X{ int value1 = 0; float value2 = 0.0f; }; int ma…

libclang の Python binding を使用する 〜 Config 編〜

前回は Python binding を導入する記事を書きました。 今回は Config 周りについて書きます。 libclang の Python binding(以下、cindex.py)では Config クラスで読み込む動的ライブラリ(以下 libclang)の管理を行います。 Config では以下のような設定…

libclang の Python binding を使用する 〜導入編〜

最近 libclang の Python binding を使用をしようた Vim プラグインを作成しているのでその覚書としてポツポツ書いていこうかと思います。 ibclang とは Clang が提供している構文解析ツールになります。 この構文解析器は Clang から提供されている Python …

Python で実行時間の計測する

Python で実行時間を計測する場合 timeit を使用するのがよいのかな。 [ソース] # -*- coding: utf-8 -* import timeit def test(): "-".join(str(n) for n in range(100)) # number で呼び出し回数を指定 print timeit.timeit('"-".join(str(n) for n in ra…

Visual Studio で Python を動かす

Visual Studio 上で Python を動作する事が出来る『Python Tools for Visual Studio』を試してみました。 Visual Studio Express Edition だと動かないらしいので、今回は、VS Shell を使用しました。 VS Shell Python Tools for Visual Studio わたしの環境…