Строковое представление llvm:: структура типа

llvm::Type 2.9 и ранее имели getDescription метод для получения строкового представления типа. Этот метод больше не существует в llvm 3.0.

Я не уверен, что это не рекомендуется в пользу Type::print(raw_ostream&), но в любом случае мне интересно это API. Какие примеры есть о том, как его использовать? Как я могу сбросить на string или же const char*?

В частности, я хочу передать строку Boost::Format который является современным C++ sprintf,

1 ответ

Решение

Я полагаю, вам нужно создать экземпляр llvm::raw_string_ostream и передайте свой std:: string в его конструктор. Теперь вы можете использовать его как llvm::raw_ostream и когда вы закончите, просто позвоните .str() чтобы получить вашу строку.

Что-то вроде того:

std::string type_str;
llvm::raw_string_ostream rso(&type_str);
your_type->print(rso);
std::cout<<rso.str();

LLVM изменил свой интерфейс, поэтому теперь будет работать следующее:

std::string type_str;
llvm::raw_string_ostream rso(type_str);
your_type->print(rso);
std::cout<<rso.str();
Другие вопросы по тегам