Строковое представление 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();