8#ifndef INSIGHTS_STRCAT_H
9#define INSIGHTS_STRCAT_H
11#include "clang/AST/AST.h"
12#include "llvm/ADT/StringExtras.h"
27 return b ? std::string{
"true"} : std::string{
"false"};
32inline std::string
ToString(
const llvm::APSInt& val)
34 if(1 == val.getBitWidth()) {
38 return llvm::toString(val, 10);
44 return arg.getZExtValue();
48inline std::string
Normalize(
const llvm::APSInt& arg)
54inline std::string
Normalize(
const llvm::APFloat& arg)
57 ::llvm::raw_string_ostream stream{str};
60#if IS_CLANG_NEWER_THAN(19)
65 if(std::string::npos == str.find(
'.')) {
77 switch(arg.getKind()) {
78 case APValue::Int:
return Normalize(arg.getInt());
79 case APValue::Float:
return Normalize(arg.getFloat());
83 return std::string{
"unsupported APValue"};
87inline std::string_view
Normalize(
const StringRef& arg)
93static inline std::string
Normalize(
const CharUnits& arg)
95 return std::to_string(arg.getQuantity());
103 if constexpr(std::is_same_v<std::remove_cvref_t<T>,
bool>) {
106 }
else if constexpr(std::is_integral_v<T>) {
107 return std::to_string(arg);
116void StrCat(std::string& ret,
const auto&... args)
123inline std::string
StrCat(
const auto&... args)
void StrCat(std::string &ret, const auto &... args)
std::string ConvertToBoolString(bool b)
Convert a boolean value to a string representation of "true" or "false".
std::string ToString(const llvm::APSInt &val)
uint64_t Normalize(const llvm::APInt &arg)
std::string StrCat(const auto &... args)