Удалить классификаторы типа CV из CXType libclang

Я использую libclang для разбора исходного файла и получения ссылки на некоторый тип как CXTypeскажи "const std::__1::basic_string<char>"(как сообщает clang_getTypeSpelling). Как я могу получить ссылку на тот же тип, но без квалификатора const?

0 ответов

Я смог сделать это, посетив дочерние элементы курсора типа. Например, учитывая курсор CXCursor,

CXType type = clang_getCursorType(cursor);
if (clang_isConstQualifiedType(type))
{
    auto RemoveConstFromType = [](CXCursor c, CXCursor, CXClientData d)
    {
        *(CXType*)d = clang_getCursorType(c);
        return (clang_isConstQualifiedType(*(CXType*)d) ? CXChildVisit_Recurse : CXChildVisit_Break);
    };
    clang_visitChildren(cursor, RemoveConstFromType, &type);
}

Надеюсь, это поможет. знак равно

Другие вопросы по тегам