helics  2.8.1
queryHelpers.hpp
1 /*
2 Copyright (c) 2017-2021,
3 Battelle Memorial Institute; Lawrence Livermore National Security, LLC; Alliance for Sustainable
4 Energy, LLC. See the top-level NOTICE for additional details. All rights reserved.
5 SPDX-License-Identifier: BSD-3-Clause
6 */
7 
8 #pragma once
9 #include <string>
10 #include <type_traits>
11 
12 template<typename X, typename Proc>
13 std::string generateStringVector(const X& data, Proc generator)
14 {
15  static_assert(std::is_convertible<decltype(generator(*(data.begin()))), std::string>::value,
16  "generator output must be convertible to std::string");
17  std::string ret(1, '[');
18  for (auto& ele : data) {
19  ret.append(generator(ele));
20  ret.push_back(';');
21  }
22  if (ret.size() > 1) {
23  ret.back() = ']';
24  } else {
25  ret.push_back(']');
26  }
27  return ret;
28 }
29 
30 template<typename X, typename Proc, typename validator>
31 std::string generateStringVector_if(const X& data, Proc generator, validator valid)
32 {
33  static_assert(std::is_convertible<decltype(generator(*(data.begin()))), std::string>::value,
34  "generator output must be convertible to std::string");
35  std::string ret(1, '[');
36  for (auto& ele : data) {
37  if (valid(ele)) {
38  ret.append(generator(ele));
39  ret.push_back(';');
40  }
41  }
42  if (ret.size() > 1) {
43  ret.back() = ']';
44  } else {
45  ret.push_back(']');
46  }
47  return ret;
48 }
data
@ data
print timing+data transmissions
Definition: loggingHelper.hpp:30