Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
F
fmt
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Libraries
fmt
Commits
c6d9730d
Unverified
Commit
c6d9730d
authored
Jun 27, 2018
by
Jonathan Müller
Committed by
GitHub
Jun 27, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix sign conversion warnings (#790)
parent
2e95823e
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
22 additions
and
20 deletions
+22
-20
include/fmt/core.h
include/fmt/core.h
+12
-3
include/fmt/format.h
include/fmt/format.h
+10
-17
No files found.
include/fmt/core.h
View file @
c6d9730d
...
...
@@ -199,10 +199,19 @@
FMT_BEGIN_NAMESPACE
// An implementation of declval for pre-C++11 compilers such as gcc 4.
namespace
internal
{
// An implementation of declval for pre-C++11 compilers such as gcc 4.
template
<
typename
T
>
typename
std
::
add_rvalue_reference
<
T
>::
type
declval
()
FMT_NOEXCEPT
;
// Casts nonnegative integer to unsigned.
template
<
typename
Int
>
FMT_CONSTEXPR
typename
std
::
make_unsigned
<
Int
>::
type
to_unsigned
(
Int
value
)
{
FMT_ASSERT
(
value
>=
0
,
"negative value"
);
return
static_cast
<
typename
std
::
make_unsigned
<
Int
>::
type
>
(
value
);
}
}
/**
...
...
@@ -749,7 +758,7 @@ class basic_parse_context : private ErrorHandler {
// Advances the begin iterator to ``it``.
FMT_CONSTEXPR
void
advance_to
(
iterator
it
)
{
format_str_
.
remove_prefix
(
i
t
-
begin
(
));
format_str_
.
remove_prefix
(
i
nternal
::
to_unsigned
(
it
-
begin
()
));
}
// Returns the next argument index.
...
...
@@ -1074,7 +1083,7 @@ class basic_format_args {
format_arg
do_get
(
size_type
index
)
const
{
int64_t
signed_types
=
static_cast
<
int64_t
>
(
types_
);
if
(
signed_types
<
0
)
{
uint64_t
num_args
=
-
signed_types
;
uint64_t
num_args
=
static_cast
<
uint64_t
>
(
-
signed_types
)
;
return
index
<
num_args
?
args_
[
index
]
:
format_arg
();
}
format_arg
arg
;
...
...
include/fmt/format.h
View file @
c6d9730d
...
...
@@ -461,13 +461,6 @@ class format_error : public std::runtime_error {
namespace
internal
{
// Casts nonnegative integer to unsigned.
template
<
typename
Int
>
FMT_CONSTEXPR
typename
std
::
make_unsigned
<
Int
>::
type
to_unsigned
(
Int
value
)
{
FMT_ASSERT
(
value
>=
0
,
"negative value"
);
return
static_cast
<
typename
std
::
make_unsigned
<
Int
>::
type
>
(
value
);
}
#if FMT_SECURE_SCL
template
<
typename
T
>
struct
checked
{
typedef
stdext
::
checked_array_iterator
<
T
*>
type
;
};
...
...
@@ -1004,7 +997,7 @@ class decimal_formatter {
uint64_t
t
=
((
1ULL
<<
(
32
+
a
))
/
data
::
POWERS_OF_10_32
[
n
]
+
1
-
n
/
9
);
t
=
((
t
*
u
)
>>
a
)
+
n
/
5
*
4
;
write_pair
(
0
,
t
>>
32
);
for
(
int
i
=
2
;
i
<
N
;
i
+=
2
)
{
for
(
unsigned
i
=
2
;
i
<
N
;
i
+=
2
)
{
t
=
100ULL
*
static_cast
<
uint32_t
>
(
t
);
write_pair
(
i
,
t
>>
32
);
}
...
...
@@ -1670,7 +1663,7 @@ FMT_CONSTEXPR unsigned parse_nonnegative_int(Iterator &it, ErrorHandler &&eh) {
value
=
max_int
+
1
;
break
;
}
value
=
value
*
10
+
(
*
it
-
'0'
);
value
=
value
*
10
+
unsigned
(
*
it
-
'0'
);
// Workaround for MSVC "setup_exception stack overflow" error:
auto
next
=
it
;
++
next
;
...
...
@@ -1717,7 +1710,7 @@ class width_checker: public function<unsigned long long> {
is_integer
<
T
>::
value
,
unsigned
long
long
>::
type
operator
()(
T
value
)
{
if
(
is_negative
(
value
))
handler_
.
on_error
(
"negative width"
);
return
value
;
return
static_cast
<
unsigned
long
long
>
(
value
)
;
}
template
<
typename
T
>
...
...
@@ -1741,7 +1734,7 @@ class precision_checker: public function<unsigned long long> {
is_integer
<
T
>::
value
,
unsigned
long
long
>::
type
operator
()(
T
value
)
{
if
(
is_negative
(
value
))
handler_
.
on_error
(
"negative precision"
);
return
value
;
return
static_cast
<
unsigned
long
long
>
(
value
)
;
}
template
<
typename
T
>
...
...
@@ -1778,7 +1771,7 @@ class specs_setter {
FMT_CONSTEXPR
void
on_width
(
unsigned
width
)
{
specs_
.
width_
=
width
;
}
FMT_CONSTEXPR
void
on_precision
(
unsigned
precision
)
{
specs_
.
precision_
=
precision
;
specs_
.
precision_
=
static_cast
<
int
>
(
precision
)
;
}
FMT_CONSTEXPR
void
end_precision
()
{}
...
...
@@ -1859,7 +1852,7 @@ FMT_CONSTEXPR void set_dynamic_spec(
unsigned
long
long
big_value
=
visit
(
Handler
<
ErrorHandler
>
(
eh
),
arg
);
if
(
big_value
>
(
std
::
numeric_limits
<
int
>::
max
)())
eh
.
on_error
(
"number is too big"
);
value
=
static_cast
<
int
>
(
big_value
);
value
=
static_cast
<
T
>
(
big_value
);
}
struct
auto_id
{};
...
...
@@ -2006,7 +1999,7 @@ FMT_CONSTEXPR Iterator parse_arg_id(Iterator it, IDHandler &&handler) {
do
{
c
=
*++
it
;
}
while
(
is_name_start
(
c
)
||
(
'0'
<=
c
&&
c
<=
'9'
));
handler
(
basic_string_view
<
char_type
>
(
pointer_from
(
start
),
it
-
start
));
handler
(
basic_string_view
<
char_type
>
(
pointer_from
(
start
),
to_unsigned
(
it
-
start
)
));
return
it
;
}
...
...
@@ -2474,8 +2467,8 @@ class basic_writer {
size
=
spec
.
width
();
}
}
else
if
(
spec
.
precision
()
>
static_cast
<
int
>
(
num_digits
))
{
size
=
prefix
.
size
()
+
s
pec
.
precision
(
);
padding
=
s
pec
.
precision
(
)
-
num_digits
;
size
=
prefix
.
size
()
+
s
tatic_cast
<
std
::
size_t
>
(
spec
.
precision
()
);
padding
=
s
tatic_cast
<
std
::
size_t
>
(
spec
.
precision
()
)
-
num_digits
;
fill
=
'0'
;
}
align_spec
as
=
spec
;
...
...
@@ -3332,7 +3325,7 @@ struct format_handler : internal::error_handler {
:
context
(
r
.
begin
(),
str
,
format_args
)
{}
void
on_text
(
iterator
begin
,
iterator
end
)
{
size_t
size
=
end
-
begin
;
auto
size
=
internal
::
to_unsigned
(
end
-
begin
)
;
auto
out
=
context
.
out
();
auto
&&
it
=
internal
::
reserve
(
out
,
size
);
it
=
std
::
copy_n
(
begin
,
size
,
it
);
...
...
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