¿Cómo obtengo el valor numérico de un elemento de enumeración usando libclang?
libclang expone esta información a través de clang_getEnumConstantDeclValue
y clang_getEnumConstantDeclUnsignedValue
. Se puede construir un mapa como el que describes visitando los hijos de un CXCursor_EnumDecl
:
static enum CXChildVisitResult VisitCursor(CXCursor cursor, CXCursor parent, CXClientData client_data) {
if (cursor.kind == CXCursor_EnumConstantDecl) {
CXString spelling = clang_getCursorSpelling(cursor);
myMap[clang_getCString(spelling)] = clang_getEnumConstantDeclValue(cursor);
clang_disposeString(spelling);
}
return CXChildVisit_Continue;
}