Skip to main content

utility-inlines.h File

C++ header file with inline implementations for the µTest++ utility functions. More...

Namespaces Index

namespacemicro_os_plus

The primary namespace for the µOS++ framework. More...

namespacemicro_test_plus

Primary namespace for the µTest++ testing framework. More...

namespaceutility

Utility functions for the µTest++ testing framework. More...

Functions Index

template <class T = std::string_view, class Delim_T>
auto split (T input, Delim_T delim) -> std::vector< T >

Split a string into a vector of sub-strings. More...

Description

C++ header file with inline implementations for the µTest++ utility functions.

This header provides the inline implementations for the utility function templates used within the µTest++ framework. It defines the logic for splitting strings into substrings using a specified delimiter, enabling convenient and type-safe string parsing in test expressions.

All definitions reside within the micro_os_plus::micro_test_plus::utility namespace, ensuring clear separation from user code and minimising the risk of naming conflicts.

The header files are organised within the include/micro-os-plus/micro-test-plus folder to maintain a structured and modular codebase.

This file is intended solely for internal use within the framework and should not be included directly by user code.

File Listing

The file content with the documentation metadata removed is:

1/*
2 * This file is part of the µOS++ project (https://micro-os-plus.github.io/).
3 * Copyright (c) 2021-2026 Liviu Ionescu. All rights reserved.
4 *
5 * Permission to use, copy, modify, and/or distribute this software for any
6 * purpose is hereby granted, under the terms of the MIT license.
7 *
8 * If a copy of the license was not distributed with this file, it can be
9 * obtained from https://opensource.org/licenses/mit.
10 *
11 * Major parts of the code are inspired from v1.1.8 of the Boost UT project,
12 * released under the terms of the Boost Version 1 Software License,
13 * which can be obtained from https://www.boost.org/LICENSE_1_0.txt.
14 */
15
16// ----------------------------------------------------------------------------
17
40
41#ifndef MICRO_OS_PLUS_MICRO_TEST_PLUS_INLINES_UTILITY_INLINES_H_
42#define MICRO_OS_PLUS_MICRO_TEST_PLUS_INLINES_UTILITY_INLINES_H_
43
44// ----------------------------------------------------------------------------
45
46#if defined(__cplusplus)
47
48// ----------------------------------------------------------------------------
49
50#if defined(__GNUC__)
51#pragma GCC diagnostic push
52
53#pragma GCC diagnostic ignored "-Waggregate-return"
54#if defined(__clang__)
55#pragma clang diagnostic ignored "-Wc++98-compat"
56#endif // defined(__clang__)
57#endif // defined(__GNUC__)
58
59// ============================================================================
60
62{
63 // --------------------------------------------------------------------------
64 namespace utility
65 {
87 template <class T = std::string_view, class Delim_T>
88 [[nodiscard]] auto
89 split (T input, Delim_T delim) -> std::vector<T>
90 {
91 std::vector<T> output{};
92 std::size_t first{};
93 while (first < std::size (input))
94 {
95 const auto second = input.find_first_of (delim, first);
96 if (first != second)
97 {
98 output.emplace_back (input.substr (first, second - first));
99 }
100 if (second == T::npos)
101 {
102 break;
103 }
104 first = second + 1;
105 }
106 return output;
107 }
108
109 // ------------------------------------------------------------------------
110 } // namespace utility
111
112 // --------------------------------------------------------------------------
113} // namespace micro_os_plus::micro_test_plus
114
115#if defined(__GNUC__)
116#pragma GCC diagnostic pop
117#endif // defined(__GNUC__)
118
119// ----------------------------------------------------------------------------
120
121#endif // defined(__cplusplus)
122
123// ----------------------------------------------------------------------------
124
125#endif // MICRO_OS_PLUS_MICRO_TEST_PLUS_INLINES_UTILITY_INLINES_H_
126
127// ----------------------------------------------------------------------------

Generated via doxygen2docusaurus 2.2.2 by Doxygen 1.17.0.