16 # define FMT_VSNPRINTF vsprintf_s 18 # define FMT_VSNPRINTF vsnprintf 21 template <
size_t SIZE>
22 void safe_sprintf(
char (&buffer)[SIZE],
const char* format, ...) {
24 va_start(args, format);
25 FMT_VSNPRINTF(buffer, SIZE, format, args);
29 extern const char*
const file_content;
32 auto open_buffered_file(FILE** fp =
nullptr) -> fmt::buffered_file;
34 template <
typename Char>
class basic_test_string {
36 std::basic_string<Char> value_;
38 static const Char empty[];
41 explicit basic_test_string(
const Char* value = empty) : value_(value) {}
43 auto value() const -> const
std::basic_string<Char>& {
return value_; }
46 template <
typename Char>
const Char basic_test_string<Char>::empty[] = {0};
48 using test_string = basic_test_string<char>;
49 using test_wstring = basic_test_string<wchar_t>;
51 template <
typename Char>
52 auto operator<<(std::basic_ostream<Char>& os,
const basic_test_string<Char>& s)
53 -> std::basic_ostream<Char>& {
59 int year_, month_, day_;
62 date(
int year,
int month,
int day) : year_(year), month_(month), day_(day) {}
64 auto year() const ->
int {
return year_; }
65 auto month() const ->
int {
return month_; }
66 auto day() const ->
int {
return day_; }
71 auto get_locale(
const char* name,
const char* alt_name =
nullptr)