REDAC HybridController
Firmware for LUCIDAC/REDAC Teensy
Loading...
Searching...
No Matches
is_number.cpp
Go to the documentation of this file.
1// Copyright (c) 2024 anabrid GmbH
2// Contact: https://www.anabrid.com/licensing/
3//
4// SPDX-License-Identifier: MIT OR GPL-2.0-or-later
5
6#include "utils/is_number.h"
7#include <charconv>
8
9bool utils::is_number(const std::string::const_iterator &start, const std::string::const_iterator &end) {
10 std::string::const_iterator it = start;
11 while (it != end && std::isdigit(*it))
12 ++it;
13 return it == end;
14}
15
16bool utils::is_number(const std::string_view::const_iterator &start, const std::string_view::const_iterator &end) {
17 std::string_view::const_iterator it = start;
18 while (it != end && std::isdigit(*it))
19 ++it;
20 return it == end;
21}
22
23std::optional<int> utils::view_to_number(std::string_view view) {
24 int result;
25 auto [ptr, ec] = std::from_chars(view.data(), view.data() + view.size(), result);
26
27 if (ec == std::errc{} && ptr == view.data() + view.size()) {
28 return result;
29 }
30 return std::nullopt; // Conversion failed
31}