строковое представление llvm :: структура типа - PullRequest
10 голосов
/ 04 января 2012

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

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

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

1 Ответ

13 голосов
/ 04 января 2012

Полагаю, вам нужно создать экземпляр 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();
...