Pisałem parser w języku C++ AST przy użyciu doskonałego interfejsu biblioteki libclang (http://clang.llvm.org/doxygen/group__CINDEX.html). Niestety wydaje się, że nie ma ujednolicenia między enumeracjami w C++ 11 a staromodnymi enumami: oba mają typ kursora CXCursor_EnumDecl i typ CXType_Enum I.e. identyczny.Jak rozpoznać różnicę między enumem a enumem z zakresu, używając libclang?
Próbowałem odwiedzić dzieci, aby zobaczyć, czy ich typ macierzysty jest inny - niestety nie. Próbowałem prosić o podstawowy typ, otrzymuję z powrotem liczbę całkowitą dla obu. Zbadałem wszystkie elementy zadeklarowane po Enum, aby sprawdzić, czy może dla staroświeckich Enums może pojawić się bind lub typedef, znowu żadna różnica nie jest oczywista.
Zaczynam myśleć, że czegoś brakuje. Czy muszę używać API do uzupełniania kodu, aby dowiedzieć się, jakiego rodzaju jest Enum czy coś takiego?