Dash Core Source Documentation (0.16.0.1)

Find detailed information regarding the Dash Core source code.

split_heap.hpp
Go to the documentation of this file.
1 //
2 // immer: immutable data structures for C++
3 // Copyright (C) 2016, 2017, 2018 Juan Pedro Bolivar Puente
4 //
5 // This software is distributed under the Boost Software License, Version 1.0.
6 // See accompanying file LICENSE or copy at http://boost.org/LICENSE_1_0.txt
7 //
8 
9 #pragma once
10 
11 #include <atomic>
12 #include <cassert>
13 
14 namespace immer {
15 
20 template <std::size_t Size, typename SmallHeap, typename BigHeap>
21 struct split_heap
22 {
23  template <typename... Tags>
24  static void* allocate(std::size_t size, Tags... tags)
25  {
26  return size <= Size
27  ? SmallHeap::allocate(size, tags...)
28  : BigHeap::allocate(size, tags...);
29  }
30 
31  template <typename... Tags>
32  static void deallocate(std::size_t size, void* data, Tags... tags)
33  {
34  if (size <= Size)
35  SmallHeap::deallocate(size, data, tags...);
36  else
37  BigHeap::deallocate(size, data, tags...);
38  }
39 };
40 
41 } // namespace immer
std::size_t size_t
Definition: bits.hpp:21
static void deallocate(std::size_t size, void *data, Tags... tags)
Definition: split_heap.hpp:32
static void * allocate(std::size_t size, Tags... tags)
Definition: split_heap.hpp:24
Released under the MIT license