| /* |
| * R : A Computer Language for Statistical Data Analysis |
| * Copyright (C) 2014-2016 The R Core Team |
| * |
| * This header file is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU Lesser General Public License as published by |
| * the Free Software Foundation; either version 2.1 of the License, or |
| * (at your option) any later version. |
| * |
| * This file is part of R. R is distributed under the terms of the |
| * GNU General Public License, either Version 2, June 1991 or Version 3, |
| * June 2007. See doc/COPYRIGHTS for details of the copyright status of R. |
| * |
| * This program is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU Lesser General Public License for more details. |
| * |
| * You should have received a copy of the GNU Lesser General Public License |
| * along with this program; if not, a copy is available at |
| * https://www.R-project.org/Licenses/ |
| * |
| * |
| * Definition of the R_allocator_t structure for custom allocators |
| * to be used with allocVector3() |
| */ |
| |
| #ifndef R_EXT_RALLOCATORS_H_ |
| #define R_EXT_RALLOCATORS_H_ |
| |
| #if defined(__cplusplus) && !defined(DO_NOT_USE_CXX_HEADERS) |
| # include <cstddef> |
| #else |
| # include <stddef.h> /* for size_t */ |
| #endif |
| |
| /* R_allocator_t typedef is also declared in Rinternals.h |
| so we guard against random inclusion order */ |
| #ifndef R_ALLOCATOR_TYPE |
| #define R_ALLOCATOR_TYPE |
| typedef struct R_allocator R_allocator_t; |
| #endif |
| |
| typedef void *(*custom_alloc_t)(R_allocator_t *allocator, size_t); |
| typedef void (*custom_free_t)(R_allocator_t *allocator, void *); |
| |
| struct R_allocator { |
| custom_alloc_t mem_alloc; /* malloc equivalent */ |
| custom_free_t mem_free; /* free equivalent */ |
| void *res; /* reserved (maybe for copy) - must be NULL */ |
| void *data; /* custom data for the allocator implementation */ |
| }; |
| |
| #endif /* R_EXT_RALLOCATORS_H_ */ |