chrono_batch_render/
Coverage:
low: ≥ 0%
medium: ≥ 75.0%
high: ≥ 90.0%
Lines:
58 / 610
9.5%
Branches:
59 / 535
11.0%
Functions:
10 / 119, 1 excl
8.4%

util/library.h
Line Branch Exec Source
1 // SPDX-License-Identifier: BSD-3-Clause
2 #pragma once
3
4 #include <filesystem>
5 #include <functional>
6 #include <initializer_list>
7 #include <string>
8 #include <string_view>
9 #include <utility>
10 #include <variant>
11 #include <vector>
12
13 #include "chrono_batch_render/util/error.h"
14 #include "chrono_batch_render/util/log.h"
15 #include "chrono_batch_render/util/version.h"
16
17 namespace chrono::batch_render {
18
19
4/8
✗ Branch 1 not taken.
✓ Branch 3 taken 1 time.
✓ Branch 4 taken 40 times.
✗ Branch 5 not taken.
✗ Branch 9 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 36 not taken.
✓ Branch 37 taken 1 time.
175 class Library {
20 public:
21
4/5
✗ Branch 0 not taken.
✓ Branch 0 taken 1 time.
✓ Branch 1 taken 14 times.
✓ Branch 1 taken 26 times.
✓ Branch 1 taken 1 time.
144 Library() = default;
22
23 static Library Load(std::initializer_list<const char*> names,
24 std::initializer_list<const char*> paths = {},
25 const std::filesystem::path& beside = {});
26 static Library Find(std::initializer_list<const char*> names);
27
28 160 explicit operator bool() const {
29
17/25
✓ Branch 0 taken 5 times.
✓ Branch 0 taken 13 times.
✓ Branch 0 taken 11 times.
✗ Branch 0 not taken.
✓ Branch 1 taken 41 times.
✗ Branch 1 not taken.
✗ Branch 1 not taken.
✓ Branch 1 taken 1 time.
✓ Branch 2 taken 26 times.
✓ Branch 3 taken 1 time.
✓ Branch 4 taken 1 time.
✓ Branch 4 taken 25 times.
✗ Branch 5 not taken.
✓ Branch 5 taken 2 times.
✓ Branch 6 taken 1 time.
✓ Branch 6 taken 3 times.
✗ Branch 7 not taken.
✓ Branch 7 taken 24 times.
✓ Branch 8 taken 1 time.
✗ Branch 9 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 14 not taken.
✓ Branch 15 taken 1 time.
157 return m_handle != nullptr;
30 }
31
32 15 const std::string& Name() const {
33
9/10
✓ Branch 1 taken 5 times.
✓ Branch 1 taken 1 time.
✗ Branch 1 not taken.
✓ Branch 4 taken 1 time.
✓ Branch 4 taken 3 times.
✓ Branch 7 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 13 taken 1 time.
✓ Branch 16 taken 1 time.
✓ Branch 19 taken 1 time.
15 return m_name;
34 }
35
36 std::filesystem::path Directory() const;
37
38 void* Symbol(const char* symbol) const;
39
40 3 template <class Function> bool Symbol(const char* symbol, Function& function) const {
41
3/9
✓ Branch 1 taken 1 time.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 time.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 11 not taken.
3 function = reinterpret_cast<Function>(Symbol(symbol));
42
3/6
✗ Branch 0 not taken.
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 time.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 time.
3 return function != nullptr;
43 }
44
45 private:
46 static Library First(const std::vector<std::string>& names, bool loadedOnly);
47
48 void* m_handle = nullptr;
49 std::string m_name;
50 };
51
52 2 class SymbolResolver {
53 public:
54 using Lookup = std::function<void*(const char* symbol)>;
55
56 1 explicit SymbolResolver(Lookup lookup) : m_lookup(std::move(lookup)) {}
57
58 1 explicit SymbolResolver(Library library)
59
1/2
✗ Branch 1 not taken.
✓ Branch 8 taken 1 time.
3 : m_lookup([library = std::move(library)](const char* symbol) {
60 3 return library.Symbol(symbol);
61 1 }) {}
62
63 4 template <class Function> void operator()(const char* symbol, Function& function) {
64 4 function = reinterpret_cast<Function>(m_lookup(symbol));
65
5/444
void chrono::batch_render::SymbolResolver::operator()<char const* (*)(int)>(char const*, char const* (*&)(int)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)()>(char const*, int (*&)()):
✗ Branch 0 not taken.
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(char*, int, int)>(char const*, int (*&)(char*, int, int)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::compute::CompilerProgram**)>(char const*, int (*&)(chrono::batch_render::device::compute::CompilerProgram**)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::compute::CompilerProgram**, char const*, char const*, int, char const* const*, char const* const*)>(char const*, int (*&)(chrono::batch_render::device::compute::CompilerProgram**, char const*, char const*, int, char const* const*, char const* const*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::compute::CompilerProgram*, char*)>(char const*, int (*&)(chrono::batch_render::device::compute::CompilerProgram*, char*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::compute::CompilerProgram*, int, char const* const*)>(char const*, int (*&)(chrono::batch_render::device::compute::CompilerProgram*, int, char const* const*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::compute::CompilerProgram*, unsigned long*)>(char const*, int (*&)(chrono::batch_render::device::compute::CompilerProgram*, unsigned long*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::cuda::CUDA_MEMCPY2D const*, chrono::batch_render::device::cuda::CUstream_st*)>(char const*, int (*&)(chrono::batch_render::device::cuda::CUDA_MEMCPY2D const*, chrono::batch_render::device::cuda::CUstream_st*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::cuda::CUctx_st*)>(char const*, int (*&)(chrono::batch_render::device::cuda::CUctx_st*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::cuda::CUctx_st**)>(char const*, int (*&)(chrono::batch_render::device::cuda::CUctx_st**)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::cuda::CUctx_st**, int)>(char const*, int (*&)(chrono::batch_render::device::cuda::CUctx_st**, int)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::cuda::CUevent_st*)>(char const*, int (*&)(chrono::batch_render::device::cuda::CUevent_st*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::cuda::CUevent_st**, unsigned int)>(char const*, int (*&)(chrono::batch_render::device::cuda::CUevent_st**, unsigned int)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::cuda::CUevent_st*, chrono::batch_render::device::cuda::CUstream_st*, unsigned int)>(char const*, int (*&)(chrono::batch_render::device::cuda::CUevent_st*, chrono::batch_render::device::cuda::CUstream_st*, unsigned int)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::cuda::CUextMemory_st*)>(char const*, int (*&)(chrono::batch_render::device::cuda::CUextMemory_st*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::cuda::CUextMemory_st**, chrono::batch_render::device::cuda::CUDA_EXTERNAL_MEMORY_HANDLE_DESC const*)>(char const*, int (*&)(chrono::batch_render::device::cuda::CUextMemory_st**, chrono::batch_render::device::cuda::CUDA_EXTERNAL_MEMORY_HANDLE_DESC const*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::cuda::CUextSemaphore_st* const*, chrono::batch_render::device::cuda::CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS const*, unsigned int, chrono::batch_render::device::cuda::CUstream_st*)>(char const*, int (*&)(chrono::batch_render::device::cuda::CUextSemaphore_st* const*, chrono::batch_render::device::cuda::CUDA_EXTERNAL_SEMAPHORE_SIGNAL_PARAMS const*, unsigned int, chrono::batch_render::device::cuda::CUstream_st*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::cuda::CUextSemaphore_st* const*, chrono::batch_render::device::cuda::CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS const*, unsigned int, chrono::batch_render::device::cuda::CUstream_st*)>(char const*, int (*&)(chrono::batch_render::device::cuda::CUextSemaphore_st* const*, chrono::batch_render::device::cuda::CUDA_EXTERNAL_SEMAPHORE_WAIT_PARAMS const*, unsigned int, chrono::batch_render::device::cuda::CUstream_st*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::cuda::CUextSemaphore_st*)>(char const*, int (*&)(chrono::batch_render::device::cuda::CUextSemaphore_st*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::cuda::CUextSemaphore_st**, chrono::batch_render::device::cuda::CUDA_EXTERNAL_SEMAPHORE_HANDLE_DESC const*)>(char const*, int (*&)(chrono::batch_render::device::cuda::CUextSemaphore_st**, chrono::batch_render::device::cuda::CUDA_EXTERNAL_SEMAPHORE_HANDLE_DESC const*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::cuda::CUfunc_st**, chrono::batch_render::device::cuda::CUmod_st*, char const*)>(char const*, int (*&)(chrono::batch_render::device::cuda::CUfunc_st**, chrono::batch_render::device::cuda::CUmod_st*, char const*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::cuda::CUfunc_st*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, chrono::batch_render::device::cuda::CUstream_st*, void**, void**)>(char const*, int (*&)(chrono::batch_render::device::cuda::CUfunc_st*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, chrono::batch_render::device::cuda::CUstream_st*, void**, void**)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::cuda::CUgraphExec_st*)>(char const*, int (*&)(chrono::batch_render::device::cuda::CUgraphExec_st*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::cuda::CUgraphExec_st**, chrono::batch_render::device::cuda::CUgraph_st*, unsigned long long)>(char const*, int (*&)(chrono::batch_render::device::cuda::CUgraphExec_st**, chrono::batch_render::device::cuda::CUgraph_st*, unsigned long long)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::cuda::CUgraphExec_st*, chrono::batch_render::device::cuda::CUstream_st*)>(char const*, int (*&)(chrono::batch_render::device::cuda::CUgraphExec_st*, chrono::batch_render::device::cuda::CUstream_st*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::cuda::CUgraph_st*)>(char const*, int (*&)(chrono::batch_render::device::cuda::CUgraph_st*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::cuda::CUmemPoolHandle_st*)>(char const*, int (*&)(chrono::batch_render::device::cuda::CUmemPoolHandle_st*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::cuda::CUmemPoolHandle_st**, chrono::batch_render::device::cuda::CUmemPoolProps const*)>(char const*, int (*&)(chrono::batch_render::device::cuda::CUmemPoolHandle_st**, chrono::batch_render::device::cuda::CUmemPoolProps const*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::cuda::CUmemPoolHandle_st*, int, void*)>(char const*, int (*&)(chrono::batch_render::device::cuda::CUmemPoolHandle_st*, int, void*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::cuda::CUmod_st*)>(char const*, int (*&)(chrono::batch_render::device::cuda::CUmod_st*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::cuda::CUmod_st**, void const*)>(char const*, int (*&)(chrono::batch_render::device::cuda::CUmod_st**, void const*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::cuda::CUstream_st*)>(char const*, int (*&)(chrono::batch_render::device::cuda::CUstream_st*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::cuda::CUstream_st**, unsigned int)>(char const*, int (*&)(chrono::batch_render::device::cuda::CUstream_st**, unsigned int)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::cuda::CUstream_st*, chrono::batch_render::device::cuda::CUevent_st*, unsigned int)>(char const*, int (*&)(chrono::batch_render::device::cuda::CUstream_st*, chrono::batch_render::device::cuda::CUevent_st*, unsigned int)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::cuda::CUstream_st*, chrono::batch_render::device::cuda::CUgraph_st**)>(char const*, int (*&)(chrono::batch_render::device::cuda::CUstream_st*, chrono::batch_render::device::cuda::CUgraph_st**)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::cuda::CUstream_st*, int)>(char const*, int (*&)(chrono::batch_render::device::cuda::CUstream_st*, int)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::cuda::CUstream_st*, void (*)(void*), void*)>(char const*, int (*&)(chrono::batch_render::device::cuda::CUstream_st*, void (*)(void*), void*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::cuda::CUuuid*, int)>(char const*, int (*&)(chrono::batch_render::device::cuda::CUuuid*, int)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::hip::hipGraphExec*)>(char const*, int (*&)(chrono::batch_render::device::hip::hipGraphExec*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::hip::hipGraphExec**, chrono::batch_render::device::hip::ihipGraph*, unsigned long long)>(char const*, int (*&)(chrono::batch_render::device::hip::hipGraphExec**, chrono::batch_render::device::hip::ihipGraph*, unsigned long long)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::hip::hipGraphExec*, chrono::batch_render::device::hip::ihipStream_t*)>(char const*, int (*&)(chrono::batch_render::device::hip::hipGraphExec*, chrono::batch_render::device::hip::ihipStream_t*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::hip::hipUUID*, int)>(char const*, int (*&)(chrono::batch_render::device::hip::hipUUID*, int)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::hip::hip_Memcpy2D const*, chrono::batch_render::device::hip::ihipStream_t*)>(char const*, int (*&)(chrono::batch_render::device::hip::hip_Memcpy2D const*, chrono::batch_render::device::hip::ihipStream_t*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::hip::ihipEvent_t*)>(char const*, int (*&)(chrono::batch_render::device::hip::ihipEvent_t*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::hip::ihipEvent_t**, unsigned int)>(char const*, int (*&)(chrono::batch_render::device::hip::ihipEvent_t**, unsigned int)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::hip::ihipEvent_t*, chrono::batch_render::device::hip::ihipStream_t*, unsigned int)>(char const*, int (*&)(chrono::batch_render::device::hip::ihipEvent_t*, chrono::batch_render::device::hip::ihipStream_t*, unsigned int)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::hip::ihipGraph*)>(char const*, int (*&)(chrono::batch_render::device::hip::ihipGraph*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::hip::ihipMemPoolHandle_t*)>(char const*, int (*&)(chrono::batch_render::device::hip::ihipMemPoolHandle_t*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::hip::ihipMemPoolHandle_t**, chrono::batch_render::device::hip::hipMemPoolProps const*)>(char const*, int (*&)(chrono::batch_render::device::hip::ihipMemPoolHandle_t**, chrono::batch_render::device::hip::hipMemPoolProps const*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::hip::ihipMemPoolHandle_t*, int, void*)>(char const*, int (*&)(chrono::batch_render::device::hip::ihipMemPoolHandle_t*, int, void*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::hip::ihipModuleSymbol_t**, chrono::batch_render::device::hip::ihipModule_t*, char const*)>(char const*, int (*&)(chrono::batch_render::device::hip::ihipModuleSymbol_t**, chrono::batch_render::device::hip::ihipModule_t*, char const*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::hip::ihipModuleSymbol_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, chrono::batch_render::device::hip::ihipStream_t*, void**, void**)>(char const*, int (*&)(chrono::batch_render::device::hip::ihipModuleSymbol_t*, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, chrono::batch_render::device::hip::ihipStream_t*, void**, void**)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::hip::ihipModule_t*)>(char const*, int (*&)(chrono::batch_render::device::hip::ihipModule_t*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::hip::ihipModule_t**, void const*)>(char const*, int (*&)(chrono::batch_render::device::hip::ihipModule_t**, void const*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::hip::ihipStream_t*)>(char const*, int (*&)(chrono::batch_render::device::hip::ihipStream_t*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::hip::ihipStream_t**, unsigned int)>(char const*, int (*&)(chrono::batch_render::device::hip::ihipStream_t**, unsigned int)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::hip::ihipStream_t*, chrono::batch_render::device::hip::ihipEvent_t*, unsigned int)>(char const*, int (*&)(chrono::batch_render::device::hip::ihipStream_t*, chrono::batch_render::device::hip::ihipEvent_t*, unsigned int)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::hip::ihipStream_t*, chrono::batch_render::device::hip::ihipGraph**)>(char const*, int (*&)(chrono::batch_render::device::hip::ihipStream_t*, chrono::batch_render::device::hip::ihipGraph**)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::hip::ihipStream_t*, int)>(char const*, int (*&)(chrono::batch_render::device::hip::ihipStream_t*, int)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(chrono::batch_render::device::hip::ihipStream_t*, void (*)(void*), void*)>(char const*, int (*&)(chrono::batch_render::device::hip::ihipStream_t*, void (*)(void*), void*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(float*, chrono::batch_render::device::cuda::CUevent_st*, chrono::batch_render::device::cuda::CUevent_st*)>(char const*, int (*&)(float*, chrono::batch_render::device::cuda::CUevent_st*, chrono::batch_render::device::cuda::CUevent_st*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(float*, chrono::batch_render::device::hip::ihipEvent_t*, chrono::batch_render::device::hip::ihipEvent_t*)>(char const*, int (*&)(float*, chrono::batch_render::device::hip::ihipEvent_t*, chrono::batch_render::device::hip::ihipEvent_t*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(int)>(char const*, int (*&)(int)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(int*)>(char const*, int (*&)(int*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(int*, int)>(char const*, int (*&)(int*, int)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(int*, int*)>(char const*, int (*&)(int*, int*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(int*, int, chrono::batch_render::device::cuda::CUfunc_st*)>(char const*, int (*&)(int*, int, chrono::batch_render::device::cuda::CUfunc_st*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(int*, int, chrono::batch_render::device::hip::ihipModuleSymbol_t*)>(char const*, int (*&)(int*, int, chrono::batch_render::device::hip::ihipModuleSymbol_t*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(int*, int, int)>(char const*, int (*&)(int*, int, int)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(int, char const**)>(char const*, int (*&)(int, char const**)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(unsigned int)>(char const*, int (*&)(unsigned int)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(unsigned long long)>(char const*, int (*&)(unsigned long long)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(unsigned long long*, chrono::batch_render::device::cuda::CUDA_RESOURCE_DESC const*, chrono::batch_render::device::cuda::CUDA_TEXTURE_DESC const*, void const*)>(char const*, int (*&)(unsigned long long*, chrono::batch_render::device::cuda::CUDA_RESOURCE_DESC const*, chrono::batch_render::device::cuda::CUDA_TEXTURE_DESC const*, void const*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(unsigned long)>(char const*, int (*&)(unsigned long)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(unsigned long*, chrono::batch_render::device::cuda::CUextMemory_st*, chrono::batch_render::device::cuda::CUDA_EXTERNAL_MEMORY_BUFFER_DESC const*)>(char const*, int (*&)(unsigned long*, chrono::batch_render::device::cuda::CUextMemory_st*, chrono::batch_render::device::cuda::CUDA_EXTERNAL_MEMORY_BUFFER_DESC const*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(unsigned long*, int)>(char const*, int (*&)(unsigned long*, int)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(unsigned long*, unsigned long)>(char const*, int (*&)(unsigned long*, unsigned long)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(unsigned long*, unsigned long*)>(char const*, int (*&)(unsigned long*, unsigned long*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(unsigned long*, unsigned long*, chrono::batch_render::device::cuda::CUmod_st*, char const*)>(char const*, int (*&)(unsigned long*, unsigned long*, chrono::batch_render::device::cuda::CUmod_st*, char const*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(unsigned long*, unsigned long, chrono::batch_render::device::cuda::CUmemPoolHandle_st*, chrono::batch_render::device::cuda::CUstream_st*)>(char const*, int (*&)(unsigned long*, unsigned long, chrono::batch_render::device::cuda::CUmemPoolHandle_st*, chrono::batch_render::device::cuda::CUstream_st*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(unsigned long*, void*, unsigned int)>(char const*, int (*&)(unsigned long*, void*, unsigned int)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(unsigned long, chrono::batch_render::device::cuda::CUstream_st*)>(char const*, int (*&)(unsigned long, chrono::batch_render::device::cuda::CUstream_st*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(unsigned long, unsigned int, unsigned long, chrono::batch_render::device::cuda::CUstream_st*)>(char const*, int (*&)(unsigned long, unsigned int, unsigned long, chrono::batch_render::device::cuda::CUstream_st*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(unsigned long, unsigned long, unsigned long, chrono::batch_render::device::cuda::CUstream_st*)>(char const*, int (*&)(unsigned long, unsigned long, unsigned long, chrono::batch_render::device::cuda::CUstream_st*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(unsigned long, void const*, unsigned long)>(char const*, int (*&)(unsigned long, void const*, unsigned long)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(unsigned long, void const*, unsigned long, chrono::batch_render::device::cuda::CUstream_st*)>(char const*, int (*&)(unsigned long, void const*, unsigned long, chrono::batch_render::device::cuda::CUstream_st*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(void* const*, chrono::batch_render::device::hip::hipExternalSemaphoreSignalParams const*, unsigned int, chrono::batch_render::device::hip::ihipStream_t*)>(char const*, int (*&)(void* const*, chrono::batch_render::device::hip::hipExternalSemaphoreSignalParams const*, unsigned int, chrono::batch_render::device::hip::ihipStream_t*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(void* const*, chrono::batch_render::device::hip::hipExternalSemaphoreWaitParams const*, unsigned int, chrono::batch_render::device::hip::ihipStream_t*)>(char const*, int (*&)(void* const*, chrono::batch_render::device::hip::hipExternalSemaphoreWaitParams const*, unsigned int, chrono::batch_render::device::hip::ihipStream_t*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(void*)>(char const*, int (*&)(void*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(void**, chrono::batch_render::device::cuda::CUDA_ARRAY3D_DESCRIPTOR const*, unsigned int)>(char const*, int (*&)(void**, chrono::batch_render::device::cuda::CUDA_ARRAY3D_DESCRIPTOR const*, unsigned int)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(void**, chrono::batch_render::device::hip::HIP_ARRAY3D_DESCRIPTOR const*, unsigned int)>(char const*, int (*&)(void**, chrono::batch_render::device::hip::HIP_ARRAY3D_DESCRIPTOR const*, unsigned int)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(void**, chrono::batch_render::device::hip::HIP_RESOURCE_DESC const*, chrono::batch_render::device::hip::HIP_TEXTURE_DESC const*, void const*)>(char const*, int (*&)(void**, chrono::batch_render::device::hip::HIP_RESOURCE_DESC const*, chrono::batch_render::device::hip::HIP_TEXTURE_DESC const*, void const*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(void**, chrono::batch_render::device::hip::hipExternalMemoryHandleDesc const*)>(char const*, int (*&)(void**, chrono::batch_render::device::hip::hipExternalMemoryHandleDesc const*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(void**, chrono::batch_render::device::hip::hipExternalSemaphoreHandleDesc const*)>(char const*, int (*&)(void**, chrono::batch_render::device::hip::hipExternalSemaphoreHandleDesc const*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(void**, unsigned long)>(char const*, int (*&)(void**, unsigned long)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(void**, unsigned long*, chrono::batch_render::device::hip::ihipModule_t*, char const*)>(char const*, int (*&)(void**, unsigned long*, chrono::batch_render::device::hip::ihipModule_t*, char const*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(void**, unsigned long, chrono::batch_render::device::hip::ihipMemPoolHandle_t*, chrono::batch_render::device::hip::ihipStream_t*)>(char const*, int (*&)(void**, unsigned long, chrono::batch_render::device::hip::ihipMemPoolHandle_t*, chrono::batch_render::device::hip::ihipStream_t*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(void**, unsigned long, unsigned int)>(char const*, int (*&)(void**, unsigned long, unsigned int)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(void**, void*, chrono::batch_render::device::hip::hipExternalMemoryBufferDesc const*)>(char const*, int (*&)(void**, void*, chrono::batch_render::device::hip::hipExternalMemoryBufferDesc const*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(void**, void*, unsigned int)>(char const*, int (*&)(void**, void*, unsigned int)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(void*, chrono::batch_render::device::hip::ihipStream_t*)>(char const*, int (*&)(void*, chrono::batch_render::device::hip::ihipStream_t*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(void*, int)>(char const*, int (*&)(void*, int)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(void*, int, unsigned long, chrono::batch_render::device::hip::ihipStream_t*)>(char const*, int (*&)(void*, int, unsigned long, chrono::batch_render::device::hip::ihipStream_t*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(void*, unsigned long, unsigned long)>(char const*, int (*&)(void*, unsigned long, unsigned long)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(void*, void const*, unsigned long)>(char const*, int (*&)(void*, void const*, unsigned long)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(void*, void const*, unsigned long, chrono::batch_render::device::hip::ihipStream_t*)>(char const*, int (*&)(void*, void const*, unsigned long, chrono::batch_render::device::hip::ihipStream_t*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(void*, void const*, unsigned long, int, chrono::batch_render::device::hip::ihipStream_t*)>(char const*, int (*&)(void*, void const*, unsigned long, int, chrono::batch_render::device::hip::ihipStream_t*)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<int (*)(void*, void*, unsigned long)>(char const*, int (*&)(void*, void*, unsigned long)):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
void chrono::batch_render::SymbolResolver::operator()<void (*)()>(char const*, void (*&)()):
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
✓ Branch 3 taken 1 time.
void chrono::batch_render::SymbolResolver::operator()<void* (*)(unsigned long)>(char const*, void* (*&)(unsigned long)):
✗ Branch 0 not taken.
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
4 if (function == nullptr && m_missing == nullptr) {
66 1 m_missing = symbol;
67 }
68 4 }
69
70 3 const char* Missing() const {
71
3/6
<unknown function 19>:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
chrono::batch_render::SymbolResolver::SymbolResolver(chrono::batch_render::Library):
✗ Branch 0 not taken.
✓ Branch 1 taken 1 time.
✓ Branch 4 taken 1 time.
✓ Branch 7 taken 1 time.
3 return m_missing;
72 }
73
74 private:
75 Lookup m_lookup;
76 const char* m_missing = nullptr;
77 };
78
79 template <class Api> using Loaded = std::variant<Api, std::string>;
80
81
5/10
std::variant<chrono::batch_render::device::compute::RuntimeCompiler, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > chrono::batch_render::LogUnavailable<chrono::batch_render::device::compute::RuntimeCompiler>(std::basic_string_view<char, std::char_traits<char> >, std::variant<chrono::batch_render::device::compute::RuntimeCompiler, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
std::variant<chrono::batch_render::device::cuda::Api, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > chrono::batch_render::LogUnavailable<chrono::batch_render::device::cuda::Api>(std::basic_string_view<char, std::char_traits<char> >, std::variant<chrono::batch_render::device::cuda::Api, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >):
✓ Branch 0 taken 11 times.
✗ Branch 1 not taken.
std::variant<chrono::batch_render::device::hip::Api, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > chrono::batch_render::LogUnavailable<chrono::batch_render::device::hip::Api>(std::basic_string_view<char, std::char_traits<char> >, std::variant<chrono::batch_render::device::hip::Api, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >):
✓ Branch 0 taken 11 times.
✗ Branch 1 not taken.
std::variant<chrono::batch_render::device::vulkan::Api, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > chrono::batch_render::LogUnavailable<chrono::batch_render::device::vulkan::Api>(std::basic_string_view<char, std::char_traits<char> >, std::variant<chrono::batch_render::device::vulkan::Api, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >):
✗ Branch 0 not taken.
✓ Branch 1 taken 11 times.
std::variant<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > chrono::batch_render::LogUnavailable<int>(std::basic_string_view<char, std::char_traits<char> >, std::variant<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >):
✓ Branch 0 taken 1 time.
✓ Branch 1 taken 1 time.
35 template <class Api> Loaded<Api> LogUnavailable(std::string_view name, Loaded<Api> loaded) {
82 35 if (const std::string* why = std::get_if<std::string>(&loaded)) {
83 23 Log(LogLevel::Debug, "{} can't be used here: {}", name, *why);
84 }
85 35 return loaded;
86 }
87
88
3/4
chrono::batch_render::device::vulkan::Api const& chrono::batch_render::RequireLoaded<chrono::batch_render::device::vulkan::Api>(std::variant<chrono::batch_render::device::vulkan::Api, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&):
✓ Branch 0 taken 62 times.
✗ Branch 1 not taken.
int const& chrono::batch_render::RequireLoaded<int>(std::variant<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&):
✓ Branch 0 taken 1 time.
✓ Branch 1 taken 1 time.
120 template <class Api> const Api& RequireLoaded(const Loaded<Api>& loaded) {
89 120 if (const Api* api = std::get_if<Api>(&loaded)) {
90 63 return *api;
91 }
92
2/6
chrono::batch_render::device::vulkan::Api const& chrono::batch_render::RequireLoaded<chrono::batch_render::device::vulkan::Api>(std::variant<chrono::batch_render::device::vulkan::Api, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&):
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
int const& chrono::batch_render::RequireLoaded<int>(std::variant<int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > const&):
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
✓ Branch 4 taken 1 time.
57 throw UnsupportedError(std::get<std::string>(loaded));
93 }
94
95 std::string TooOld(std::string_view what, Version found, Version needed);
96
97 }
98