строковое представление llvm:: Type structure

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 в его construtor. Теперь вы можете использовать его как 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();