1

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)
4

1 に答える 1