LCOV - code coverage report
Current view: top level - elsa/storage/memory_resource - MemoryResource.cpp (source / functions) Hit Total Coverage
Test: coverage-all.lcov Lines: 19 23 82.6 %
Date: 2024-05-16 04:22:26 Functions: 3 4 75.0 %

          Line data    Source code
       1             : #include "MemoryResource.h"
       2             : 
       3             : #include "UniversalResource.h"
       4             : #include "AllocationHint.h"
       5             : 
       6             : #include <mutex>
       7             : 
       8             : namespace elsa::mr
       9             : {
      10             :     /*
      11             :      *   Memory-Resource Singleton
      12             :      */
      13             :     static std::mutex mrSingletonLock;
      14             :     static MemoryResource mrSingleton;
      15             : 
      16             :     void setGlobalResource(const MemoryResource& r)
      17          14 :     {
      18          14 :         if (!r)
      19           0 :             return;
      20          14 :         std::lock_guard<std::mutex> _lock(mrSingletonLock);
      21          14 :         mrSingleton = r;
      22          14 :     }
      23             :     MemoryResource globalResource()
      24       58550 :     {
      25       58550 :         std::lock_guard<std::mutex> _lock(mrSingletonLock);
      26       58550 :         if (!mrSingleton)
      27         112 :             mrSingleton = UniversalResource::make();
      28       58550 :         return mrSingleton;
      29       58550 :     }
      30             :     MemoryResource defaultResource()
      31       58515 :     {
      32       58515 :         std::optional<MemoryResource> resource = hint::selectMemoryResource();
      33       58515 :         if (resource) {
      34           6 :             return std::move(*resource);
      35       58509 :         } else {
      36       58509 :             return globalResource();
      37       58509 :         }
      38       58515 :     }
      39             :     bool isBaselineMRSet()
      40           0 :     {
      41           0 :         return bool(mrSingleton);
      42           0 :     }
      43             : } // namespace elsa::mr

Generated by: LCOV version 1.14