Coverage Report

Created: 2025-11-16 06:56

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/botan/build/include/public/botan/allocator.h
Line
Count
Source
1
/*
2
* (C) 2023 Jack Lloyd
3
*
4
* Botan is released under the Simplified BSD License (see license.txt)
5
*/
6
7
#ifndef BOTAN_ALLOCATOR_HELPERS_H_
8
#define BOTAN_ALLOCATOR_HELPERS_H_
9
10
#include <botan/types.h>
11
#include <cstring>
12
13
namespace Botan {
14
15
/*
16
* Define BOTAN_MALLOC_FN
17
*/
18
#if defined(__clang__) || defined(__GNUG__)
19
   #define BOTAN_MALLOC_FN __attribute__((malloc))
20
#elif defined(_MSC_VER)
21
   #define BOTAN_MALLOC_FN __declspec(restrict)
22
#else
23
   #define BOTAN_MALLOC_FN
24
#endif
25
26
/**
27
* Allocate a memory buffer by some method. This should only be used for
28
* primitive types (uint8_t, uint32_t, etc).
29
*
30
* @param elems the number of elements
31
* @param elem_size the size of each element
32
* @return pointer to allocated and zeroed memory, or throw std::bad_alloc on failure
33
*/
34
BOTAN_PUBLIC_API(2, 3) BOTAN_MALLOC_FN void* allocate_memory(size_t elems, size_t elem_size);
35
36
/**
37
* Free a pointer returned by allocate_memory
38
* @param p the pointer returned by allocate_memory
39
* @param elems the number of elements, as passed to allocate_memory
40
* @param elem_size the size of each element, as passed to allocate_memory
41
*/
42
BOTAN_PUBLIC_API(2, 3) void deallocate_memory(void* p, size_t elems, size_t elem_size);
43
44
/**
45
* Ensure the allocator is initialized
46
*/
47
void BOTAN_UNSTABLE_API initialize_allocator();
48
49
class Allocator_Initializer final {
50
   public:
51
2
      Allocator_Initializer() { initialize_allocator(); }
52
};
53
54
}  // namespace Botan
55
56
#endif