Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
S
spdlog
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
spdlog
Commits
17702969
Commit
17702969
authored
Oct 02, 2018
by
gabime
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Upgrded to fmt version 5.2.1
parent
cc3613e0
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
104 additions
and
378 deletions
+104
-378
color.h
include/spdlog/fmt/bundled/color.h
+0
-278
core.h
include/spdlog/fmt/bundled/core.h
+64
-4
format.h
include/spdlog/fmt/bundled/format.h
+31
-63
locale.h
include/spdlog/fmt/bundled/locale.h
+0
-27
printf.h
include/spdlog/fmt/bundled/printf.h
+6
-6
ranges.h
include/spdlog/fmt/bundled/ranges.h
+3
-0
No files found.
include/spdlog/fmt/bundled/color.h
deleted
100644 → 0
View file @
cc3613e0
// Formatting library for C++ - color support
//
// Copyright (c) 2018 - present, Victor Zverovich and fmt contributors
// All rights reserved.
//
// For the license information refer to format.h.
#ifndef FMT_COLOR_H_
#define FMT_COLOR_H_
#include "format.h"
FMT_BEGIN_NAMESPACE
#ifdef FMT_DEPRECATED_COLORS
// color and (v)print_colored are deprecated.
enum
color
{
black
,
red
,
green
,
yellow
,
blue
,
magenta
,
cyan
,
white
};
FMT_API
void
vprint_colored
(
color
c
,
string_view
format
,
format_args
args
);
FMT_API
void
vprint_colored
(
color
c
,
wstring_view
format
,
wformat_args
args
);
template
<
typename
...
Args
>
inline
void
print_colored
(
color
c
,
string_view
format_str
,
const
Args
&
...
args
)
{
vprint_colored
(
c
,
format_str
,
make_format_args
(
args
...));
}
template
<
typename
...
Args
>
inline
void
print_colored
(
color
c
,
wstring_view
format_str
,
const
Args
&
...
args
)
{
vprint_colored
(
c
,
format_str
,
make_format_args
<
wformat_context
>
(
args
...));
}
inline
void
vprint_colored
(
color
c
,
string_view
format
,
format_args
args
)
{
char
escape
[]
=
"
\x1b
[30m"
;
escape
[
3
]
=
static_cast
<
char
>
(
'0'
+
c
);
std
::
fputs
(
escape
,
stdout
);
vprint
(
format
,
args
);
std
::
fputs
(
internal
::
data
::
RESET_COLOR
,
stdout
);
}
inline
void
vprint_colored
(
color
c
,
wstring_view
format
,
wformat_args
args
)
{
wchar_t
escape
[]
=
L"
\x1b
[30m"
;
escape
[
3
]
=
static_cast
<
wchar_t
>
(
'0'
+
c
);
std
::
fputws
(
escape
,
stdout
);
vprint
(
format
,
args
);
std
::
fputws
(
internal
::
data
::
WRESET_COLOR
,
stdout
);
}
#else
// Experimental color support.
enum
class
color
:
uint32_t
{
alice_blue
=
0xF0F8FF
,
// rgb(240,248,255)
antique_white
=
0xFAEBD7
,
// rgb(250,235,215)
aqua
=
0x00FFFF
,
// rgb(0,255,255)
aquamarine
=
0x7FFFD4
,
// rgb(127,255,212)
azure
=
0xF0FFFF
,
// rgb(240,255,255)
beige
=
0xF5F5DC
,
// rgb(245,245,220)
bisque
=
0xFFE4C4
,
// rgb(255,228,196)
black
=
0x000000
,
// rgb(0,0,0)
blanched_almond
=
0xFFEBCD
,
// rgb(255,235,205)
blue
=
0x0000FF
,
// rgb(0,0,255)
blue_violet
=
0x8A2BE2
,
// rgb(138,43,226)
brown
=
0xA52A2A
,
// rgb(165,42,42)
burly_wood
=
0xDEB887
,
// rgb(222,184,135)
cadet_blue
=
0x5F9EA0
,
// rgb(95,158,160)
chartreuse
=
0x7FFF00
,
// rgb(127,255,0)
chocolate
=
0xD2691E
,
// rgb(210,105,30)
coral
=
0xFF7F50
,
// rgb(255,127,80)
cornflower_blue
=
0x6495ED
,
// rgb(100,149,237)
cornsilk
=
0xFFF8DC
,
// rgb(255,248,220)
crimson
=
0xDC143C
,
// rgb(220,20,60)
cyan
=
0x00FFFF
,
// rgb(0,255,255)
dark_blue
=
0x00008B
,
// rgb(0,0,139)
dark_cyan
=
0x008B8B
,
// rgb(0,139,139)
dark_golden_rod
=
0xB8860B
,
// rgb(184,134,11)
dark_gray
=
0xA9A9A9
,
// rgb(169,169,169)
dark_green
=
0x006400
,
// rgb(0,100,0)
dark_khaki
=
0xBDB76B
,
// rgb(189,183,107)
dark_magenta
=
0x8B008B
,
// rgb(139,0,139)
dark_olive_green
=
0x556B2F
,
// rgb(85,107,47)
dark_orange
=
0xFF8C00
,
// rgb(255,140,0)
dark_orchid
=
0x9932CC
,
// rgb(153,50,204)
dark_red
=
0x8B0000
,
// rgb(139,0,0)
dark_salmon
=
0xE9967A
,
// rgb(233,150,122)
dark_sea_green
=
0x8FBC8F
,
// rgb(143,188,143)
dark_slate_blue
=
0x483D8B
,
// rgb(72,61,139)
dark_slate_gray
=
0x2F4F4F
,
// rgb(47,79,79)
dark_turquoise
=
0x00CED1
,
// rgb(0,206,209)
dark_violet
=
0x9400D3
,
// rgb(148,0,211)
deep_pink
=
0xFF1493
,
// rgb(255,20,147)
deep_sky_blue
=
0x00BFFF
,
// rgb(0,191,255)
dim_gray
=
0x696969
,
// rgb(105,105,105)
dodger_blue
=
0x1E90FF
,
// rgb(30,144,255)
fire_brick
=
0xB22222
,
// rgb(178,34,34)
floral_white
=
0xFFFAF0
,
// rgb(255,250,240)
forest_green
=
0x228B22
,
// rgb(34,139,34)
fuchsia
=
0xFF00FF
,
// rgb(255,0,255)
gainsboro
=
0xDCDCDC
,
// rgb(220,220,220)
ghost_white
=
0xF8F8FF
,
// rgb(248,248,255)
gold
=
0xFFD700
,
// rgb(255,215,0)
golden_rod
=
0xDAA520
,
// rgb(218,165,32)
gray
=
0x808080
,
// rgb(128,128,128)
green
=
0x008000
,
// rgb(0,128,0)
green_yellow
=
0xADFF2F
,
// rgb(173,255,47)
honey_dew
=
0xF0FFF0
,
// rgb(240,255,240)
hot_pink
=
0xFF69B4
,
// rgb(255,105,180)
indian_red
=
0xCD5C5C
,
// rgb(205,92,92)
indigo
=
0x4B0082
,
// rgb(75,0,130)
ivory
=
0xFFFFF0
,
// rgb(255,255,240)
khaki
=
0xF0E68C
,
// rgb(240,230,140)
lavender
=
0xE6E6FA
,
// rgb(230,230,250)
lavender_blush
=
0xFFF0F5
,
// rgb(255,240,245)
lawn_green
=
0x7CFC00
,
// rgb(124,252,0)
lemon_chiffon
=
0xFFFACD
,
// rgb(255,250,205)
light_blue
=
0xADD8E6
,
// rgb(173,216,230)
light_coral
=
0xF08080
,
// rgb(240,128,128)
light_cyan
=
0xE0FFFF
,
// rgb(224,255,255)
light_golden_rod_yellow
=
0xFAFAD2
,
// rgb(250,250,210)
light_gray
=
0xD3D3D3
,
// rgb(211,211,211)
light_green
=
0x90EE90
,
// rgb(144,238,144)
light_pink
=
0xFFB6C1
,
// rgb(255,182,193)
light_salmon
=
0xFFA07A
,
// rgb(255,160,122)
light_sea_green
=
0x20B2AA
,
// rgb(32,178,170)
light_sky_blue
=
0x87CEFA
,
// rgb(135,206,250)
light_slate_gray
=
0x778899
,
// rgb(119,136,153)
light_steel_blue
=
0xB0C4DE
,
// rgb(176,196,222)
light_yellow
=
0xFFFFE0
,
// rgb(255,255,224)
lime
=
0x00FF00
,
// rgb(0,255,0)
lime_green
=
0x32CD32
,
// rgb(50,205,50)
linen
=
0xFAF0E6
,
// rgb(250,240,230)
magenta
=
0xFF00FF
,
// rgb(255,0,255)
maroon
=
0x800000
,
// rgb(128,0,0)
medium_aquamarine
=
0x66CDAA
,
// rgb(102,205,170)
medium_blue
=
0x0000CD
,
// rgb(0,0,205)
medium_orchid
=
0xBA55D3
,
// rgb(186,85,211)
medium_purple
=
0x9370DB
,
// rgb(147,112,219)
medium_sea_green
=
0x3CB371
,
// rgb(60,179,113)
medium_slate_blue
=
0x7B68EE
,
// rgb(123,104,238)
medium_spring_green
=
0x00FA9A
,
// rgb(0,250,154)
medium_turquoise
=
0x48D1CC
,
// rgb(72,209,204)
medium_violet_red
=
0xC71585
,
// rgb(199,21,133)
midnight_blue
=
0x191970
,
// rgb(25,25,112)
mint_cream
=
0xF5FFFA
,
// rgb(245,255,250)
misty_rose
=
0xFFE4E1
,
// rgb(255,228,225)
moccasin
=
0xFFE4B5
,
// rgb(255,228,181)
navajo_white
=
0xFFDEAD
,
// rgb(255,222,173)
navy
=
0x000080
,
// rgb(0,0,128)
old_lace
=
0xFDF5E6
,
// rgb(253,245,230)
olive
=
0x808000
,
// rgb(128,128,0)
olive_drab
=
0x6B8E23
,
// rgb(107,142,35)
orange
=
0xFFA500
,
// rgb(255,165,0)
orange_red
=
0xFF4500
,
// rgb(255,69,0)
orchid
=
0xDA70D6
,
// rgb(218,112,214)
pale_golden_rod
=
0xEEE8AA
,
// rgb(238,232,170)
pale_green
=
0x98FB98
,
// rgb(152,251,152)
pale_turquoise
=
0xAFEEEE
,
// rgb(175,238,238)
pale_violet_red
=
0xDB7093
,
// rgb(219,112,147)
papaya_whip
=
0xFFEFD5
,
// rgb(255,239,213)
peach_puff
=
0xFFDAB9
,
// rgb(255,218,185)
peru
=
0xCD853F
,
// rgb(205,133,63)
pink
=
0xFFC0CB
,
// rgb(255,192,203)
plum
=
0xDDA0DD
,
// rgb(221,160,221)
powder_blue
=
0xB0E0E6
,
// rgb(176,224,230)
purple
=
0x800080
,
// rgb(128,0,128)
rebecca_purple
=
0x663399
,
// rgb(102,51,153)
red
=
0xFF0000
,
// rgb(255,0,0)
rosy_brown
=
0xBC8F8F
,
// rgb(188,143,143)
royal_blue
=
0x4169E1
,
// rgb(65,105,225)
saddle_brown
=
0x8B4513
,
// rgb(139,69,19)
salmon
=
0xFA8072
,
// rgb(250,128,114)
sandy_brown
=
0xF4A460
,
// rgb(244,164,96)
sea_green
=
0x2E8B57
,
// rgb(46,139,87)
sea_shell
=
0xFFF5EE
,
// rgb(255,245,238)
sienna
=
0xA0522D
,
// rgb(160,82,45)
silver
=
0xC0C0C0
,
// rgb(192,192,192)
sky_blue
=
0x87CEEB
,
// rgb(135,206,235)
slate_blue
=
0x6A5ACD
,
// rgb(106,90,205)
slate_gray
=
0x708090
,
// rgb(112,128,144)
snow
=
0xFFFAFA
,
// rgb(255,250,250)
spring_green
=
0x00FF7F
,
// rgb(0,255,127)
steel_blue
=
0x4682B4
,
// rgb(70,130,180)
tan
=
0xD2B48C
,
// rgb(210,180,140)
teal
=
0x008080
,
// rgb(0,128,128)
thistle
=
0xD8BFD8
,
// rgb(216,191,216)
tomato
=
0xFF6347
,
// rgb(255,99,71)
turquoise
=
0x40E0D0
,
// rgb(64,224,208)
violet
=
0xEE82EE
,
// rgb(238,130,238)
wheat
=
0xF5DEB3
,
// rgb(245,222,179)
white
=
0xFFFFFF
,
// rgb(255,255,255)
white_smoke
=
0xF5F5F5
,
// rgb(245,245,245)
yellow
=
0xFFFF00
,
// rgb(255,255,0)
yellow_green
=
0x9ACD32
,
// rgb(154,205,50)
};
// enum class color
// rgb is a struct for red, green and blue colors.
// We use rgb as name because some editors will show it as color direct in the
// editor.
struct
rgb
{
FMT_CONSTEXPR_DECL
rgb
()
:
r
(
0
),
g
(
0
),
b
(
0
)
{}
FMT_CONSTEXPR_DECL
rgb
(
uint8_t
r_
,
uint8_t
g_
,
uint8_t
b_
)
:
r
(
r_
),
g
(
g_
),
b
(
b_
)
{}
FMT_CONSTEXPR_DECL
rgb
(
uint32_t
hex
)
:
r
((
hex
>>
16
)
&
0xFF
),
g
((
hex
>>
8
)
&
0xFF
),
b
((
hex
)
&
0xFF
)
{}
FMT_CONSTEXPR_DECL
rgb
(
color
hex
)
:
r
((
uint32_t
(
hex
)
>>
16
)
&
0xFF
),
g
((
uint32_t
(
hex
)
>>
8
)
&
0xFF
),
b
(
uint32_t
(
hex
)
&
0xFF
)
{}
uint8_t
r
;
uint8_t
g
;
uint8_t
b
;
};
void
vprint_rgb
(
rgb
fd
,
string_view
format
,
format_args
args
);
void
vprint_rgb
(
rgb
fd
,
rgb
bg
,
string_view
format
,
format_args
args
);
/**
Formats a string and prints it to stdout using ANSI escape sequences to
specify foreground color 'fd'.
Example:
fmt::print(fmt::color::red, "Elapsed time: {0:.2f} seconds", 1.23);
*/
template
<
typename
...
Args
>
inline
void
print
(
rgb
fd
,
string_view
format_str
,
const
Args
&
...
args
)
{
vprint_rgb
(
fd
,
format_str
,
make_format_args
(
args
...));
}
/**
Formats a string and prints it to stdout using ANSI escape sequences to
specify foreground color 'fd' and background color 'bg'.
Example:
fmt::print(fmt::color::red, fmt::color::black,
"Elapsed time: {0:.2f} seconds", 1.23);
*/
template
<
typename
...
Args
>
inline
void
print
(
rgb
fd
,
rgb
bg
,
string_view
format_str
,
const
Args
&
...
args
)
{
vprint_rgb
(
fd
,
bg
,
format_str
,
make_format_args
(
args
...));
}
namespace
internal
{
FMT_CONSTEXPR
void
to_esc
(
uint8_t
c
,
char
out
[],
int
offset
)
{
out
[
offset
+
0
]
=
static_cast
<
char
>
(
'0'
+
c
/
100
);
out
[
offset
+
1
]
=
static_cast
<
char
>
(
'0'
+
c
/
10
%
10
);
out
[
offset
+
2
]
=
static_cast
<
char
>
(
'0'
+
c
%
10
);
}
}
// namespace internal
inline
void
vprint_rgb
(
rgb
fd
,
string_view
format
,
format_args
args
)
{
char
escape_fd
[]
=
"
\x1b
[38;2;000;000;000m"
;
internal
::
to_esc
(
fd
.
r
,
escape_fd
,
7
);
internal
::
to_esc
(
fd
.
g
,
escape_fd
,
11
);
internal
::
to_esc
(
fd
.
b
,
escape_fd
,
15
);
std
::
fputs
(
escape_fd
,
stdout
);
vprint
(
format
,
args
);
std
::
fputs
(
internal
::
data
::
RESET_COLOR
,
stdout
);
}
inline
void
vprint_rgb
(
rgb
fd
,
rgb
bg
,
string_view
format
,
format_args
args
)
{
char
escape_fd
[]
=
"
\x1b
[38;2;000;000;000m"
;
// foreground color
char
escape_bg
[]
=
"
\x1b
[48;2;000;000;000m"
;
// background color
internal
::
to_esc
(
fd
.
r
,
escape_fd
,
7
);
internal
::
to_esc
(
fd
.
g
,
escape_fd
,
11
);
internal
::
to_esc
(
fd
.
b
,
escape_fd
,
15
);
internal
::
to_esc
(
bg
.
r
,
escape_bg
,
7
);
internal
::
to_esc
(
bg
.
g
,
escape_bg
,
11
);
internal
::
to_esc
(
bg
.
b
,
escape_bg
,
15
);
std
::
fputs
(
escape_fd
,
stdout
);
std
::
fputs
(
escape_bg
,
stdout
);
vprint
(
format
,
args
);
std
::
fputs
(
internal
::
data
::
RESET_COLOR
,
stdout
);
}
#endif
FMT_END_NAMESPACE
#endif // FMT_COLOR_H_
include/spdlog/fmt/bundled/core.h
View file @
17702969
...
...
@@ -16,7 +16,7 @@
#include <type_traits>
// The fmt library version in the form major * 10000 + minor * 100 + patch.
#define FMT_VERSION 5020
0
#define FMT_VERSION 5020
1
#ifdef __has_feature
# define FMT_HAS_FEATURE(x) __has_feature(x)
...
...
@@ -340,9 +340,22 @@ class basic_format_arg;
template
<
typename
Context
>
class
basic_format_args
;
template
<
typename
T
>
struct
no_formatter_error
:
std
::
false_type
{};
// A formatter for objects of type T.
template
<
typename
T
,
typename
Char
=
char
,
typename
Enable
=
void
>
struct
formatter
;
struct
formatter
{
static_assert
(
no_formatter_error
<
T
>::
value
,
"don't know how to format the type, include fmt/ostream.h if it provides "
"an operator<< that should be used"
);
// The following functions are not defined intentionally.
template
<
typename
ParseContext
>
typename
ParseContext
::
iterator
parse
(
ParseContext
&
);
template
<
typename
FormatContext
>
auto
format
(
const
T
&
val
,
FormatContext
&
ctx
)
->
decltype
(
ctx
.
out
());
};
template
<
typename
T
,
typename
Char
,
typename
Enable
=
void
>
struct
convert_to_int
{
...
...
@@ -755,6 +768,54 @@ class basic_format_arg {
bool
is_arithmetic
()
const
{
return
internal
::
is_arithmetic
(
type_
);
}
};
struct
monostate
{};
/**
\rst
Visits an argument dispatching to the appropriate visit method based on
the argument type. For example, if the argument type is ``double`` then
``vis(value)`` will be called with the value of type ``double``.
\endrst
*/
template
<
typename
Visitor
,
typename
Context
>
FMT_CONSTEXPR
typename
internal
::
result_of
<
Visitor
(
int
)
>::
type
visit
(
Visitor
&&
vis
,
const
basic_format_arg
<
Context
>
&
arg
)
{
typedef
typename
Context
::
char_type
char_type
;
switch
(
arg
.
type_
)
{
case
internal
:
:
none_type
:
break
;
case
internal
:
:
named_arg_type
:
FMT_ASSERT
(
false
,
"invalid argument type"
);
break
;
case
internal
:
:
int_type
:
return
vis
(
arg
.
value_
.
int_value
);
case
internal
:
:
uint_type
:
return
vis
(
arg
.
value_
.
uint_value
);
case
internal
:
:
long_long_type
:
return
vis
(
arg
.
value_
.
long_long_value
);
case
internal
:
:
ulong_long_type
:
return
vis
(
arg
.
value_
.
ulong_long_value
);
case
internal
:
:
bool_type
:
return
vis
(
arg
.
value_
.
int_value
!=
0
);
case
internal
:
:
char_type
:
return
vis
(
static_cast
<
char_type
>
(
arg
.
value_
.
int_value
));
case
internal
:
:
double_type
:
return
vis
(
arg
.
value_
.
double_value
);
case
internal
:
:
long_double_type
:
return
vis
(
arg
.
value_
.
long_double_value
);
case
internal
:
:
cstring_type
:
return
vis
(
arg
.
value_
.
string
.
value
);
case
internal
:
:
string_type
:
return
vis
(
basic_string_view
<
char_type
>
(
arg
.
value_
.
string
.
value
,
arg
.
value_
.
string
.
size
));
case
internal
:
:
pointer_type
:
return
vis
(
arg
.
value_
.
pointer
);
case
internal
:
:
custom_type
:
return
vis
(
typename
basic_format_arg
<
Context
>::
handle
(
arg
.
value_
.
custom
));
}
return
vis
(
monostate
());
}
// Parsing context consisting of a format string range being parsed and an
// argument counter for automatic indexing.
template
<
typename
Char
,
typename
ErrorHandler
=
internal
::
error_handler
>
...
...
@@ -1382,8 +1443,7 @@ inline std::basic_string<
typedef
typename
buffer_context
<
char_t
>::
type
context_t
;
format_arg_store
<
context_t
,
Args
...
>
as
{
args
...};
return
internal
::
vformat
(
basic_string_view
<
char_t
>
(
format_str
),
basic_format_args
<
context_t
>
(
as
));
basic_string_view
<
char_t
>
(
format_str
),
basic_format_args
<
context_t
>
(
as
));
}
FMT_API
void
vprint
(
std
::
FILE
*
f
,
string_view
format_str
,
format_args
args
);
...
...
include/spdlog/fmt/bundled/format.h
View file @
17702969
...
...
@@ -51,6 +51,12 @@
# define FMT_ICC_VERSION 0
#endif
#ifdef __NVCC__
# define FMT_CUDA_VERSION (__CUDACC_VER_MAJOR__ * 100 + __CUDACC_VER_MINOR__)
#else
# define FMT_CUDA_VERSION 0
#endif
#include "core.h"
#if FMT_GCC_VERSION >= 406 || FMT_CLANG_VERSION
...
...
@@ -114,17 +120,23 @@ FMT_END_NAMESPACE
#endif
#ifndef FMT_USE_USER_DEFINED_LITERALS
// For Intel's compiler both it and the system gcc/msc must support UDLs.
// For Intel's compiler and NVIDIA's compiler both it and the system gcc/msc
// must support UDLs.
# if (FMT_HAS_FEATURE(cxx_user_literals) || \
FMT_GCC_VERSION >= 407 || FMT_MSC_VER >= 1900) && \
(!FMT_ICC_VERSION || FMT_ICC_VERSION >= 1500)
(!(FMT_ICC_VERSION || FMT_CUDA_VERSION) || \
FMT_ICC_VERSION >= 1500 || FMT_CUDA_VERSION >= 700)
# define FMT_USE_USER_DEFINED_LITERALS 1
# else
# define FMT_USE_USER_DEFINED_LITERALS 0
# endif
#endif
#if FMT_USE_USER_DEFINED_LITERALS && FMT_ICC_VERSION == 0 && \
// EDG C++ Front End based compilers (icc, nvcc) do not currently support UDL
// templates.
#if FMT_USE_USER_DEFINED_LITERALS && \
FMT_ICC_VERSION == 0 && \
FMT_CUDA_VERSION == 0 && \
((FMT_GCC_VERSION >= 600 && __cplusplus >= 201402L) || \
(defined(FMT_CLANG_VERSION) && FMT_CLANG_VERSION >= 304))
# define FMT_UDL_TEMPLATE 1
...
...
@@ -1154,54 +1166,6 @@ template <typename T = void>
struct
null
{};
}
// namespace internal
struct
monostate
{};
/**
\rst
Visits an argument dispatching to the appropriate visit method based on
the argument type. For example, if the argument type is ``double`` then
``vis(value)`` will be called with the value of type ``double``.
\endrst
*/
template
<
typename
Visitor
,
typename
Context
>
FMT_CONSTEXPR
typename
internal
::
result_of
<
Visitor
(
int
)
>::
type
visit
(
Visitor
&&
vis
,
const
basic_format_arg
<
Context
>
&
arg
)
{
typedef
typename
Context
::
char_type
char_type
;
switch
(
arg
.
type_
)
{
case
internal
:
:
none_type
:
break
;
case
internal
:
:
named_arg_type
:
FMT_ASSERT
(
false
,
"invalid argument type"
);
break
;
case
internal
:
:
int_type
:
return
vis
(
arg
.
value_
.
int_value
);
case
internal
:
:
uint_type
:
return
vis
(
arg
.
value_
.
uint_value
);
case
internal
:
:
long_long_type
:
return
vis
(
arg
.
value_
.
long_long_value
);
case
internal
:
:
ulong_long_type
:
return
vis
(
arg
.
value_
.
ulong_long_value
);
case
internal
:
:
bool_type
:
return
vis
(
arg
.
value_
.
int_value
!=
0
);
case
internal
:
:
char_type
:
return
vis
(
static_cast
<
char_type
>
(
arg
.
value_
.
int_value
));
case
internal
:
:
double_type
:
return
vis
(
arg
.
value_
.
double_value
);
case
internal
:
:
long_double_type
:
return
vis
(
arg
.
value_
.
long_double_value
);
case
internal
:
:
cstring_type
:
return
vis
(
arg
.
value_
.
string
.
value
);
case
internal
:
:
string_type
:
return
vis
(
basic_string_view
<
char_type
>
(
arg
.
value_
.
string
.
value
,
arg
.
value_
.
string
.
size
));
case
internal
:
:
pointer_type
:
return
vis
(
arg
.
value_
.
pointer
);
case
internal
:
:
custom_type
:
return
vis
(
typename
basic_format_arg
<
Context
>::
handle
(
arg
.
value_
.
custom
));
}
return
vis
(
monostate
());
}
enum
alignment
{
ALIGN_DEFAULT
,
ALIGN_LEFT
,
ALIGN_RIGHT
,
ALIGN_CENTER
,
ALIGN_NUMERIC
};
...
...
@@ -3231,8 +3195,8 @@ struct formatter<
specs_
.
precision_
,
specs_
.
precision_ref
,
ctx
);
typedef
output_range
<
typename
FormatContext
::
iterator
,
typename
FormatContext
::
char_type
>
range_type
;
return
visit
(
arg_formatter
<
range_type
>
(
ctx
,
&
specs_
),
internal
::
make_arg
<
FormatContext
>
(
val
));
return
fmt
::
visit
(
arg_formatter
<
range_type
>
(
ctx
,
&
specs_
),
internal
::
make_arg
<
FormatContext
>
(
val
));
}
private
:
...
...
@@ -3292,8 +3256,8 @@ class dynamic_formatter {
checker
.
end_precision
();
typedef
output_range
<
typename
FormatContext
::
iterator
,
typename
FormatContext
::
char_type
>
range
;
visit
(
arg_formatter
<
range
>
(
ctx
,
&
specs_
),
internal
::
make_arg
<
FormatContext
>
(
val
));
fmt
::
visit
(
arg_formatter
<
range
>
(
ctx
,
&
specs_
),
internal
::
make_arg
<
FormatContext
>
(
val
));
return
ctx
.
out
();
}
...
...
@@ -3493,16 +3457,17 @@ inline wformat_context::iterator vformat_to(
return
vformat_to
<
arg_formatter
<
range
>>
(
buf
,
format_str
,
args
);
}
template
<
typename
String
,
typename
...
Args
,
std
::
size_t
SIZE
=
inline_buffer_size
>
inline
format_context
::
iterator
format_to
(
basic_memory_buffer
<
char
,
SIZE
>
&
buf
,
const
String
&
format_str
,
template
<
typename
String
,
typename
...
Args
,
std
::
size_t
SIZE
=
inline_buffer_size
,
typename
Char
=
typename
internal
::
format_string_traits
<
String
>::
char_type
>
inline
typename
buffer_context
<
Char
>::
type
::
iterator
format_to
(
basic_memory_buffer
<
Char
,
SIZE
>
&
buf
,
const
String
&
format_str
,
const
Args
&
...
args
)
{
internal
::
check_format_string
<
Args
...
>
(
format_str
);
typedef
typename
internal
::
format_string_traits
<
String
>::
char_type
char_t
;
return
vformat_to
(
buf
,
basic_string_view
<
char_t
>
(
format_str
),
make_format_args
<
typename
buffer_context
<
char_t
>::
type
>
(
args
...));
buf
,
basic_string_view
<
Char
>
(
format_str
),
make_format_args
<
typename
buffer_context
<
Char
>::
type
>
(
args
...));
}
template
<
typename
OutputIt
,
typename
Char
=
char
>
...
...
@@ -3725,10 +3690,13 @@ FMT_END_NAMESPACE
#if defined(FMT_STRING_ALIAS) && FMT_STRING_ALIAS
/**
\rst
Constructs a compile-time format string.
Constructs a compile-time format string. This macro is disabled by default to
prevent potential name collisions. To enable it define ``FMT_STRING_ALIAS`` to
1 before including ``fmt/format.h``.
**Example**::
#define FMT_STRING_ALIAS 1
#include <fmt/format.h>
// A compile-time error because 'd' is an invalid specifier for strings.
std::string s = format(fmt("{:d}"), "foo");
...
...
include/spdlog/fmt/bundled/locale.h
deleted
100644 → 0
View file @
cc3613e0
// Formatting library for C++ - locale support
//
// Copyright (c) 2012 - 2016, Victor Zverovich
// All rights reserved.
//
// For the license information refer to format.h.
#include "format.h"
#include <locale>
namespace
fmt
{
class
locale
{
private
:
std
::
locale
locale_
;
public
:
explicit
locale
(
std
::
locale
loc
=
std
::
locale
())
:
locale_
(
loc
)
{
}
std
::
locale
get
()
{
return
locale_
;
}
};
}
// namespace fmt
include/spdlog/fmt/bundled/printf.h
View file @
17702969
...
...
@@ -133,7 +133,7 @@ class arg_converter: public function<void> {
// unsigned).
template
<
typename
T
,
typename
Context
,
typename
Char
>
void
convert_arg
(
basic_format_arg
<
Context
>
&
arg
,
Char
type
)
{
visit
(
arg_converter
<
T
,
Context
>
(
arg
,
type
),
arg
);
fmt
::
visit
(
arg_converter
<
T
,
Context
>
(
arg
,
type
),
arg
);
}
// Converts an integer argument to char for printf.
...
...
@@ -454,7 +454,7 @@ unsigned basic_printf_context<OutputIt, Char, AF>::parse_header(
}
else
if
(
*
it
==
'*'
)
{
++
it
;
spec
.
width_
=
visit
(
internal
::
printf_width_handler
<
char_type
>
(
spec
),
get_arg
(
it
));
fmt
::
visit
(
internal
::
printf_width_handler
<
char_type
>
(
spec
),
get_arg
(
it
));
}
return
arg_index
;
}
...
...
@@ -490,14 +490,14 @@ void basic_printf_context<OutputIt, Char, AF>::format() {
}
else
if
(
*
it
==
'*'
)
{
++
it
;
spec
.
precision_
=
visit
(
internal
::
printf_precision_handler
(),
get_arg
(
it
));
fmt
::
visit
(
internal
::
printf_precision_handler
(),
get_arg
(
it
));
}
else
{
spec
.
precision_
=
0
;
}
}
format_arg
arg
=
get_arg
(
it
,
arg_index
);
if
(
spec
.
flag
(
HASH_FLAG
)
&&
visit
(
internal
::
is_zero_int
(),
arg
))
if
(
spec
.
flag
(
HASH_FLAG
)
&&
fmt
::
visit
(
internal
::
is_zero_int
(),
arg
))
spec
.
flags_
&=
~
internal
::
to_unsigned
<
int
>
(
HASH_FLAG
);
if
(
spec
.
fill_
==
'0'
)
{
if
(
arg
.
is_arithmetic
())
...
...
@@ -551,7 +551,7 @@ void basic_printf_context<OutputIt, Char, AF>::format() {
break
;
case
'c'
:
// TODO: handle wchar_t better?
visit
(
internal
::
char_converter
<
basic_printf_context
>
(
arg
),
arg
);
fmt
::
visit
(
internal
::
char_converter
<
basic_printf_context
>
(
arg
),
arg
);
break
;
}
}
...
...
@@ -559,7 +559,7 @@ void basic_printf_context<OutputIt, Char, AF>::format() {
start
=
it
;
// Format argument.
visit
(
AF
(
buffer
,
spec
,
*
this
),
arg
);
fmt
::
visit
(
AF
(
buffer
,
spec
,
*
this
),
arg
);
}
buffer
.
append
(
pointer_from
(
start
),
pointer_from
(
it
));
}
...
...
include/spdlog/fmt/bundled/ranges.h
View file @
17702969
...
...
@@ -87,6 +87,9 @@ class is_like_std_string {
!
std
::
is_void
<
decltype
(
check
<
T
>
(
FMT_NULL
))
>::
value
;
};
template
<
typename
Char
>
struct
is_like_std_string
<
fmt
::
basic_string_view
<
Char
>>
:
std
::
true_type
{};
template
<
typename
...
Ts
>
struct
conditional_helper
{};
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment