LCOV - code coverage report
Current view: top level - json/detail - default_resource.hpp (source / functions) Coverage Total Hit
Test: coverage_remapped.info Lines: 100.0 % 4 4
Test Date: 2026-02-25 20:43:10 Functions: 100.0 % 2 2

           TLA  Line data    Source code
       1                 : //
       2                 : // Copyright (c) 2019 Vinnie Falco (vinnie.falco@gmail.com)
       3                 : //
       4                 : // Distributed under the Boost Software License, Version 1.0. (See accompanying
       5                 : // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       6                 : //
       7                 : // Official repository: https://github.com/boostorg/json
       8                 : //
       9                 : 
      10                 : #ifndef BOOST_JSON_DEFAULT_RESOURCE_HPP
      11                 : #define BOOST_JSON_DEFAULT_RESOURCE_HPP
      12                 : 
      13                 : #include <boost/json/detail/config.hpp>
      14                 : #include <boost/container/pmr/memory_resource.hpp>
      15                 : 
      16                 : namespace boost {
      17                 : namespace json {
      18                 : namespace detail {
      19                 : 
      20                 : #ifdef _MSC_VER
      21                 : #pragma warning(push)
      22                 : #pragma warning(disable: 4251) // class needs to have dll-interface to be used by clients of class
      23                 : #pragma warning(disable: 4275) // non dll-interface class used as base for dll-interface class
      24                 : #endif
      25                 : 
      26                 : // A simple memory resource that uses operator new and delete.
      27                 : class
      28                 :     BOOST_SYMBOL_VISIBLE
      29                 :     BOOST_JSON_DECL
      30                 : default_resource final
      31                 :     : public container::pmr::memory_resource
      32                 : {
      33                 :     union holder;
      34                 : 
      35                 : #ifndef BOOST_JSON_WEAK_CONSTINIT
      36                 : # ifndef BOOST_JSON_NO_DESTROY
      37                 :     static holder instance_;
      38                 : # else
      39                 :     BOOST_JSON_NO_DESTROY
      40                 :     static default_resource instance_;
      41                 : # endif
      42                 : #endif
      43                 : 
      44                 : public:
      45                 :     static
      46                 :     container::pmr::memory_resource*
      47 HIT      530848 :     get() noexcept
      48                 :     {
      49                 :     #ifdef BOOST_JSON_WEAK_CONSTINIT
      50                 :         static default_resource instance_;
      51                 :     #endif
      52                 :         return reinterpret_cast<memory_resource*>(
      53                 :             reinterpret_cast<std::uintptr_t*>(
      54          530848 :                 &instance_));
      55                 :     }
      56                 : 
      57                 :     ~default_resource();
      58                 : 
      59                 :     void*
      60                 :     do_allocate(
      61                 :         std::size_t n,
      62                 :         std::size_t) override;
      63                 : 
      64                 :     void
      65                 :     do_deallocate(
      66                 :         void* p,
      67                 :         std::size_t,
      68                 :         std::size_t) override;
      69                 : 
      70                 :     bool
      71                 :     do_is_equal(
      72                 :         memory_resource const& mr) const noexcept override;
      73                 : };
      74                 : 
      75                 : #ifdef _MSC_VER
      76                 : #pragma warning(pop)
      77                 : #endif
      78                 : 
      79                 : union default_resource::
      80                 :     holder
      81                 : {
      82                 : #ifndef BOOST_JSON_WEAK_CONSTINIT
      83                 :     constexpr
      84                 : #endif
      85                 :     holder()
      86                 :         : mr()
      87                 :     {
      88                 :     }
      89                 : 
      90              39 :     ~holder()
      91                 :     {
      92              39 :     }
      93                 : 
      94                 :     default_resource mr;
      95                 : };
      96                 : 
      97                 : } // detail
      98                 : } // namespace json
      99                 : } // namespace boost
     100                 : 
     101                 : #endif
        

Generated by: LCOV version 2.3