PGROUTING  2.4
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
pgr_alloc.hpp
Go to the documentation of this file.
1 /*PGR-GNU*****************************************************************
2 File: pgr_palloc.hpp
3 
4 Copyright (c) 2015 Celia Virginia Vergara Castillo
5 Mail: vicky_vergara@hotmail.com
6 
7 ------
8 
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2 of the License, or
12 (at your option) any later version.
13 
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18 
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, write to the Free Software
21 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
22 
23 ********************************************************************PGR-GNU*/
24 
25 #ifndef SRC_COMMON_SRC_PGR_ALLOC_HPP_
26 #define SRC_COMMON_SRC_PGR_ALLOC_HPP_
27 #pragma once
28 
29 
30 extern "C" {
31 #if PGSQL_VERSION < 94
32 #ifdef __MINGW32__
33 #include <winsock2.h>
34 #include <windows.h>
35 #endif
36 #endif
37 
38 #include "./postgres_connection.h"
39 #include <utils/palloc.h>
40 }
41 
42 #include <string>
43 
60 template <typename T>
61 T*
62 pgr_alloc(std::size_t size, T* ptr) {
63  if (!ptr) {
64  ptr = static_cast<T*>(SPI_palloc(size * sizeof(T)));
65  } else {
66  ptr = static_cast<T*>(SPI_repalloc(ptr, size * sizeof(T)));
67  }
68  return ptr;
69 }
70 
71 template <typename T>
72 T*
73 pgr_free(T* ptr) {
74  if (ptr) {
75  pfree(ptr);
76  }
77  return nullptr;
78 }
79 
80 char *
81 pgr_msg(const std::string &msg);
82 
83 #endif // SRC_COMMON_SRC_PGR_ALLOC_HPP_
T * pgr_free(T *ptr)
Definition: pgr_alloc.hpp:73
T * pgr_alloc(std::size_t size, T *ptr)
allocates memory
Definition: pgr_alloc.hpp:62
char * pgr_msg(const std::string &msg)
Definition: pgr_alloc.cpp:29