¿Cómo obtengo el valor numérico de un elemento de enumeración usando libclang?

 C Programming >> Programación C >  >> Tags >> Clang
¿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;
}