libclang を使用する場合、関数を stdio.h から除外するにはどうすればよいですか?
以下のソースを使用して関数定義のみを収集すると、stdio.h からもすべての関数を取得することになります。
インデックスの作成中に「-x c-header」のような引数を渡すことができると読みました。しかし、libclang で適用可能な引数を与えるこの方法はありません。
tu = index.parse(self.filename, "-x c-header")
「c-header」引数を含めた後、「cindex.py」の「parse」関数の定義に従って、「unsaved_files」配列にも入力する必要があります。
def parse(self, path, args = [], unsaved_files = [], options = 0):
これを行う正しい方法がわかりません。
def funcdefn_visitor(self, node, parent, userdata):
if node.kind == clang.cindex.CursorKind.FUNCTION_DECL: #gives function definitions
self.func_defn.append(clang.cindex.Cursor_displayname(node))
self.func_defn_line_no.append(node.location.line)
self.func_defn_col_no.append(node.location.column)
print 'Found %s [line=%s, col=%s]' % (
clang.cindex.Cursor_displayname(node),
node.location.line,
node.location.column)
return 2 # means continue visiting recursively
index = clang.cindex.Index.create()
tu = index.parse(self.filename)
#-- link cursor visitor to call back to give function definitions
clang.cindex.Cursor_visit(
tu.cursor,
clang.cindex.Cursor_visit_callback(self.funcdefn_visitor),
None)