Crossed Fingers 🤞
C++ testing framework
Loading...
Searching...
No Matches
utilities.h
1
24
25#ifndef UTILS_H
26#define UTILS_H
27
28#include <cxxabi.h>
29#include <regex>
30#include <string>
31#include <vector>
32
33namespace crossedfingers {
34template<typename Type> auto getTypeName() -> std::string {
35 return abi::__cxa_demangle(typeid(Type).name(), nullptr, nullptr, nullptr);
36}
37
38template<typename Type> auto getTypeName(const Type &_) -> std::string {
39 (void) _;
40 return abi::__cxa_demangle(typeid(Type).name(), nullptr, nullptr, nullptr);
41}
42
43inline auto getTypeName(const std::type_info *type) -> std::string {
44 return abi::__cxa_demangle(type->name(), nullptr, nullptr, nullptr);
45}
46
47inline auto split(const std::string &str, const std::string &delimiter) -> std::vector<std::string> {
48 const std::regex split_regex(delimiter);
49 std::sregex_token_iterator iter(str.begin(), str.end(), split_regex, -1);
50 const std::sregex_token_iterator end;
52 while (iter != end) {
53 std::string current = *iter++;
54 if (! current.empty()) {
55 result.push_back(current);
56 }
57 }
58
59 return result;
60}
61} // namespace crossedfingers
62
63#endif // UTILS_H
T string(T... args)
Definition assert.h:32
T vector