GCC Code Coverage Report


Directory: ./
File: src/PAlignedAllocator.h
Date: 2025-08-06 14:32:39
Exec Total Coverage
Lines: 8 10 80.0%
Functions: 2 2 100.0%
Branches: 2 4 50.0%

Line Branch Exec Source
1 /***************************************
2 Auteur : Pierre Aubert
3 Mail : pierre.aubert@lapp.in2p3.fr
4 Licence : CeCILL-C
5 ****************************************/
6
7 #ifndef __PALIGNED_ALLOCATOR_H__
8 #define __PALIGNED_ALLOCATOR_H__
9
10 #include <new>
11 #include <limits>
12 #include <iostream>
13 #include <vector>
14
15 #include <malloc.h>
16
17 #include "phoenix_template_alloc.h"
18
19 ///@brief Custom allocator to align memory of std::vector
20 template<class T>
21 struct PAlignedAllocator{
22 ///Value of the type of the current allocator (used by std::vector to avoid ambiguities if we use multiple template)
23 typedef T value_type;
24 PAlignedAllocator () = default; //Declare the current constructor as default constructor
25
26 ///Copy constructor from U type
27 template<class U>
28 constexpr PAlignedAllocator (const PAlignedAllocator <U>&) noexcept {}
29
30 ///Do the memory allocation
31 /** @param n : number of element to be allocated
32 * @return pointer to the allocated memory
33 * This function is nodiscard, so return value cannot be ignored
34 * We have to remove nodiscard when we make it static (and it works with std::vector)
35 */
36 1 static /*[[nodiscard]]*/ T* allocate(std::size_t n){
37
1/2
✗ Branch 0 (3→4) not taken.
✓ Branch 1 (3→7) taken 1 times.
1 if(n > std::numeric_limits<std::size_t>::max() / sizeof(T)){
38 throw std::bad_array_new_length();
39 }
40 1 T* p = phoenix_template_alloc_aligned1d<T>(n);
41
1/2
✓ Branch 0 (8→9) taken 1 times.
✗ Branch 1 (8→10) not taken.
1 if(p != NULL){
42 1 return p;
43 }
44 throw std::bad_alloc();
45 }
46 ///Free the allocated memory
47 /** @param p : pointer to be freed
48 * @param n : number of element allocated in p
49 */
50 1 static void deallocate(T* p, std::size_t n) noexcept{
51 1 phoenix_freeAlignedVector(p);
52 1 }
53 };
54
55
56
57 #endif
58
59