Im folgenden Header-Datei Ich mag den entsprechenden +reflect
Kommentar zu der Klasse und Membervariable erhalten:Abrufen Kommentare Python mit libclang
#ifndef __HEADER_FOO
#define __HEADER_FOO
//+reflect
class Foo
{
public:
private:
int m_int; //+reflect
};
#endif
die Python-Anbindung Verwendung für libclang und das folgende Skripts:
import sys
import clang.cindex
def dumpnode(node, indent):
print ' ' * indent, node.kind, node.spelling
for i in node.get_children():
dumpnode(i, indent+2)
def main():
index = clang.cindex.Index.create()
tu = index.parse(sys.argv[1], args=['-x', 'c++'])
dumpnode(tu.cursor, 0)
if __name__ == '__main__':
main()
gibt mir diese Ausgabe:
CursorKind.TRANSLATION_UNIT None
CursorKind.TYPEDEF_DECL __builtin_va_list
CursorKind.CLASS_DECL type_info
CursorKind.CLASS_DECL Foo
CursorKind.CXX_ACCESS_SPEC_DECL
CursorKind.CXX_ACCESS_SPEC_DECL
CursorKind.FIELD_DECL m_int
Die prob lem ist, dass die Kommentare fehlen. Werden sie vom Präprozessor entkleidet? Gibt es einen Weg, das zu verhindern?
Wie wäre es CXComment machen? http://clang.llvm.org/doxygen/structCXComment.html oder PARSE_INCLUDE_BRIEF_COMMENTS_IN_CODE_COMPLETION? – user408952