HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
src
hikogui
telemetry
format_check.hpp
1
// Copyright Take Vos 2022.
2
// Distributed under the Boost Software License, Version 1.0.
3
// (See accompanying file LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt)
4
5
#pragma once
6
7
#include "../utility/utility.hpp"
8
#include "../macros.hpp"
9
#include <string_view>
10
#include <type_traits>
11
12
hi_export_module(hikogui.telemetry.format_check);
13
14
15
hi_export
namespace
hi::inline
v1
{
16
25
constexpr
int
format_count
(std::string_view fmt)
noexcept
26
{
27
auto
num_args = 0;
28
auto
o_count = 0;
29
auto
c_count = 0;
30
auto
is_open =
false
;
31
auto
prev =
' '
;
32
for
(
auto
c : fmt) {
33
if
(c != prev) {
34
if
(o_count % 2) {
35
if
(is_open) {
36
return
-1;
37
}
38
is_open =
true
;
39
40
}
else
if
(c_count % 2) {
41
if
(not is_open) {
42
return
-2;
43
}
44
++num_args;
45
is_open =
false
;
46
}
47
}
48
49
o_count = c ==
'{'
? o_count + 1 : 0;
50
c_count = c ==
'}'
? c_count + 1 : 0;
51
prev = c;
52
}
53
54
if
(c_count % 2) {
55
if
(not is_open) {
56
return
-2;
57
}
58
++num_args;
59
60
}
else
if
(is_open) {
61
return
-3;
62
}
63
64
return
num_args;
65
}
66
67
}
// namespace hi::inline v1
v1
DOXYGEN BUG.
Definition
algorithm_misc.hpp:20
v1::format_count
constexpr int format_count(std::string_view fmt) noexcept
Count arguments of a std::format format string.
Definition
format_check.hpp:25
Generated on Mon Apr 22 2024 12:51:37 for HikoGUI by
1.10.0