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_TEST_PLUS_UTILITY_INLINES_H_
42#define MICRO_TEST_PLUS_UTILITY_INLINES_H_
43
44// ----------------------------------------------------------------------------
45
46#ifdef __cplusplus
47
48// ----------------------------------------------------------------------------
49
50#if defined(__GNUC__)
51#pragma GCC diagnostic push
52#pragma GCC diagnostic ignored "-Waggregate-return"
53#if defined(__clang__)
54#pragma clang diagnostic ignored "-Wc++98-compat"
55#endif
56#endif
57
58// ============================================================================
59
61{
62 // --------------------------------------------------------------------------
63 namespace utility
64 {
86 template <class T = std::string_view, class Delim_T>
87 [[nodiscard]] auto
88 split (T input, Delim_T delim) -> std::vector<T>
89 {
90 std::vector<T> output{};
91 std::size_t first{};
92 while (first < std::size (input))
93 {
94 const auto second = input.find_first_of (delim, first);
95 if (first != second)
96 {
97 output.emplace_back (input.substr (first, second - first));
98 }
99 if (second == T::npos)
100 {
101 break;
102 }
103 first = second + 1;
104 }
105 return output;
106 }
107
108 // ------------------------------------------------------------------------
109 } // namespace utility
110
111 // --------------------------------------------------------------------------
112} // namespace micro_os_plus::micro_test_plus
113
114#if defined(__GNUC__)
115#pragma GCC diagnostic pop
116#endif
117
118// ----------------------------------------------------------------------------
119
120#endif // __cplusplus
121
122// ----------------------------------------------------------------------------
123
124#endif // MICRO_TEST_PLUS_UTILITY_INLINES_H_
125
126// ----------------------------------------------------------------------------

Generated via doxygen2docusaurus 2.2.0 by Doxygen 1.17.0.