31 #include <type_traits>
40 static_assert(std::is_unsigned_v<T>,
"Unsigned type required");
43 if (value < 10)
return string(1,
'0' +
char(value));
44 char buf[(
sizeof(T) * 5 + 1) / 2];
45 char *
p = buf +
sizeof(buf);
48 char ch =
static_cast<char>(value % 10);
52 return string(
p, buf +
sizeof(buf) -
p);
61 if (value < 10 && value >= 0)
return string(1,
'0' +
char(value));
63 bool negative = (value < 0);
65 typedef typename std::make_unsigned_t<T> unsigned_type;
66 unsigned_type val(value);
71 char buf[(
sizeof(unsigned_type) * 5 + 1) / 2 + 1];
72 char *
p = buf +
sizeof(buf);
75 char ch =
static_cast<char>(val % 10);
84 return string(
p, buf +
sizeof(buf) -
p);
97 str(
unsigned int value)
121 str(
unsigned long long value)
133 size_t size = snprintf(buf,
sizeof(buf), fmt, value);
135 if (size >
sizeof(buf)) size =
sizeof(buf);
136 return string(buf, size);
142 return format(
"%.20g", value);
148 return format(
"%p", value);
string str(const void *value)
Convert const void * to std::string.
static string format(const char *fmt, T value)
The Xapian namespace contains public interfaces for the Xapian library.
Negate unsigned integer, avoiding compiler warnings.
constexpr std::enable_if_t< std::is_unsigned_v< T >, T > negate_unsigned(T value)
Various assertion macros.
#define AssertRel(A, REL, B)
static string tostring_unsigned(T value)
static string tostring(T value)
Convert types to std::string.