The Gaudi Framework  v36r9p1 (5c15b2bb)
Gaudi::Monitoring::details Namespace Reference

Typedefs

template<typename T >
using has_merge_and_reset_ = decltype(std::declval< T >().mergeAndReset(std::declval< T && >()))
 
template<typename T >
using has_merge_from_json_ = decltype(std::declval< T >().mergeAndReset(nlohmann::json{}))
 
template<typename T >
using has_from_json_ = decltype(T::fromJSON(nlohmann::json{}))
 
using MergeAndReset_t = void(*)(void *, void *)
 
using MergeAndResetFromJSON_t = void(*)(void *, const nlohmann::json &)
 

Functions

template<typename T >
MergeAndReset_t makeMergeAndResetFor ()
 
template<typename T >
MergeAndResetFromJSON_t makeMergeAndResetFromJSONFor ()
 

Variables

template<typename T >
constexpr bool has_merge_and_reset_v = Gaudi::cpp17::is_detected_v<has_merge_and_reset_, T>
 
template<typename T >
constexpr bool has_merge_from_json_v = Gaudi::cpp17::is_detected_v<has_merge_from_json_, T>
 
template<typename T >
constexpr bool has_from_json_v = Gaudi::cpp17::is_detected_v<has_from_json_, T>
 

Typedef Documentation

◆ has_from_json_

template<typename T >
using Gaudi::Monitoring::details::has_from_json_ = typedef decltype( T::fromJSON( nlohmann::json{} ) )

Definition at line 35 of file MonitoringHub.h.

◆ has_merge_and_reset_

template<typename T >
using Gaudi::Monitoring::details::has_merge_and_reset_ = typedef decltype( std::declval<T>().mergeAndReset( std::declval<T&&>() ) )

Definition at line 27 of file MonitoringHub.h.

◆ has_merge_from_json_

template<typename T >
using Gaudi::Monitoring::details::has_merge_from_json_ = typedef decltype( std::declval<T>().mergeAndReset( nlohmann::json{} ) )

Definition at line 31 of file MonitoringHub.h.

◆ MergeAndReset_t

using Gaudi::Monitoring::details::MergeAndReset_t = typedef void ( * )( void*, void* )

Definition at line 39 of file MonitoringHub.h.

◆ MergeAndResetFromJSON_t

using Gaudi::Monitoring::details::MergeAndResetFromJSON_t = typedef void ( * )( void*, const nlohmann::json& )

Definition at line 52 of file MonitoringHub.h.

Function Documentation

◆ makeMergeAndResetFor()

template<typename T >
MergeAndReset_t Gaudi::Monitoring::details::makeMergeAndResetFor ( )

Definition at line 42 of file MonitoringHub.h.

42  {
43  if constexpr ( has_merge_and_reset_v<T> ) {
44  return []( void* ptr, void* other ) {
45  reinterpret_cast<T*>( ptr )->mergeAndReset( std::move( *reinterpret_cast<T*>( other ) ) );
46  };
47  } else {
48  return []( void*, void* ) {};
49  }
50  }

◆ makeMergeAndResetFromJSONFor()

template<typename T >
MergeAndResetFromJSON_t Gaudi::Monitoring::details::makeMergeAndResetFromJSONFor ( )

Definition at line 55 of file MonitoringHub.h.

55  {
56  if constexpr ( has_merge_from_json_v<T> ) {
57  return []( void* ptr, const nlohmann::json& other ) { reinterpret_cast<T*>( ptr )->mergeAndReset( other ); };
58  } else if constexpr ( has_merge_and_reset_v<T> && has_from_json_v<T> ) {
59  return []( void* ptr, const nlohmann::json& other ) {
60  reinterpret_cast<T*>( ptr )->mergeAndReset( T::fromJSON( other ) );
61  };
62  } else {
63  return nullptr;
64  }
65  }

Variable Documentation

◆ has_from_json_v

template<typename T >
constexpr bool Gaudi::Monitoring::details::has_from_json_v = Gaudi::cpp17::is_detected_v<has_from_json_, T>
inlineconstexpr

Definition at line 37 of file MonitoringHub.h.

◆ has_merge_and_reset_v

template<typename T >
constexpr bool Gaudi::Monitoring::details::has_merge_and_reset_v = Gaudi::cpp17::is_detected_v<has_merge_and_reset_, T>
inlineconstexpr

Definition at line 29 of file MonitoringHub.h.

◆ has_merge_from_json_v

template<typename T >
constexpr bool Gaudi::Monitoring::details::has_merge_from_json_v = Gaudi::cpp17::is_detected_v<has_merge_from_json_, T>
inlineconstexpr

Definition at line 33 of file MonitoringHub.h.

std::move
T move(T... args)
jsonFromLHCbLog.json
dictionary json
Definition: jsonFromLHCbLog.py:87