ergo
allocate.h
Go to the documentation of this file.
1 /* Ergo, version 3.8, a program for linear scaling electronic structure
2  * calculations.
3  * Copyright (C) 2019 Elias Rudberg, Emanuel H. Rubensson, Pawel Salek,
4  * and Anastasia Kruchinina.
5  *
6  * This program is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program. If not, see <http://www.gnu.org/licenses/>.
18  *
19  * Primary academic reference:
20  * Ergo: An open-source program for linear-scaling electronic structure
21  * calculations,
22  * Elias Rudberg, Emanuel H. Rubensson, Pawel Salek, and Anastasia
23  * Kruchinina,
24  * SoftwareX 7, 107 (2018),
25  * <http://dx.doi.org/10.1016/j.softx.2018.03.005>
26  *
27  * For further information about Ergo, see <http://www.ergoscf.org>.
28  */
29 
36 #ifndef MAT_ALLOCATE_HEADER
37 #define MAT_ALLOCATE_HEADER
38 
39 namespace mat{
40 
41  template<class T>
42  T* allocateElements(int n) {
43  return new T[n];
44  }
45 
46  template<class T>
47  void freeElements(T* ptr) {
48  delete[] ptr;
49  }
50 
51  /* Specializations for common basic element types: float, double, etc. */
52 
53  /* float */
54 
55  template<>
56  float* allocateElements<float>(int n);
57 
58  template<>
59  void freeElements(float* ptr);
60 
61  /* double */
62 
63  template<>
64  double* allocateElements<double>(int n);
65 
66  template<>
67  void freeElements(double* ptr);
68 
69 } /* end namespace mat */
70 
71 #endif
mat::allocateElements< double >
double * allocateElements< double >(int n)
Definition: allocate.cc:56
mat::allocateElements< float >
float * allocateElements< float >(int n)
Definition: allocate.cc:44
AllocatorManager.h
Code for AllocatorManager class used for memory allocation/deallocation in matrix library....
mat::AllocatorManager::free
void free(Treal *ptr)
Definition: AllocatorManager.h:121
allocate.h
Code for memory allocation/deallocation routines used by matrix library.
mat
Definition: allocate.cc:39
mat::AllocatorManager::alloc
Treal * alloc(size_t n)
Definition: AllocatorManager.h:73
mat::allocateElements
T * allocateElements(int n)
Definition: allocate.h:42
mat::AllocatorManager::instance
static AllocatorManager & instance()
mat::freeElements
void freeElements(float *ptr)
Definition: allocate.cc:49