main page
modules
namespaces
classes
files
Gecode home
Generated on Wed Jan 1 2020 10:37:59 for Gecode by
doxygen
1.8.16
gecode
support
allocator.hpp
Go to the documentation of this file.
1
/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2
/*
3
* Main authors:
4
* Christian Schulte <schulte@gecode.org>
5
*
6
* Copyright:
7
* Christian Schulte, 2016
8
*
9
* This file is part of Gecode, the generic constraint
10
* development environment:
11
* http://www.gecode.org
12
*
13
* Permission is hereby granted, free of charge, to any person obtaining
14
* a copy of this software and associated documentation files (the
15
* "Software"), to deal in the Software without restriction, including
16
* without limitation the rights to use, copy, modify, merge, publish,
17
* distribute, sublicense, and/or sell copies of the Software, and to
18
* permit persons to whom the Software is furnished to do so, subject to
19
* the following conditions:
20
*
21
* The above copyright notice and this permission notice shall be
22
* included in all copies or substantial portions of the Software.
23
*
24
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
25
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
27
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
28
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
29
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
30
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31
*
32
*/
33
34
#include <cstring>
35
#include <cstdlib>
36
37
#ifdef GECODE_PEAKHEAP_MALLOC_H
38
#include <malloc.h>
39
#endif
40
41
#ifdef GECODE_PEAKHEAP_MALLOC_MALLOC_H
42
#include <malloc/malloc.h>
43
#endif
44
45
#ifdef GECODE_ALLOCATOR
46
47
namespace
Gecode
{
namespace
Support {
48
60
class
Allocator
{
61
public
:
63
Allocator
(
void
);
65
void
*
alloc
(
size_t
n
);
67
void
*
realloc
(
void
*
p
,
size_t
n
);
69
void
free
(
void
*
p
);
71
void
*
memcpy
(
void
*
d
,
const
void
*s,
size_t
n
);
72
};
73
74
75
forceinline
76
Allocator::Allocator
(
void
) {
77
}
78
forceinline
void
*
79
Allocator::alloc
(
size_t
n
) {
80
return ::malloc(
n
);
81
}
82
forceinline
void
*
83
Allocator::realloc
(
void
*
p
,
size_t
n
) {
84
return ::realloc(
p
,
n
);
85
}
86
forceinline
void
87
Allocator::free
(
void
*
p
) {
88
::free
(
p
);
89
}
90
forceinline
void
*
91
Allocator::memcpy
(
void
*
d
,
const
void
*s,
size_t
n
) {
92
return ::memcpy(
d
,s,
n
);
93
}
94
95
}}
96
97
#endif
98
99
namespace
Gecode
{
namespace
Support {
100
105
extern
GECODE_SUPPORT_EXPORT
106
Allocator
allocator
;
107
108
}}
109
110
// STATISTICS: support-any
Gecode::Support::Allocator::alloc
void * alloc(size_t n)
Allocate memory block of size n.
Definition:
allocator.hpp:79
Gecode::Support::Allocator::free
void free(void *p)
Free memory block p.
Definition:
allocator.hpp:87
Gecode::Support::allocator
Allocator allocator
The single global default memory allocator.
Definition:
allocator.cpp:38
Gecode
Gecode toplevel namespace
Gecode::Support::Allocator
Default memory allocator.
Definition:
allocator.hpp:60
Gecode::Support::Allocator::memcpy
void * memcpy(void *d, const void *s, size_t n)
Copy n bytes from source s directly to d and returns d.
Definition:
allocator.hpp:91
Gecode::Support::Allocator::Allocator
Allocator(void)
Default constructor.
Definition:
allocator.hpp:76
Test::Int::Distinct::d
Gecode::IntSet d(v, 7)
forceinline
#define forceinline
Definition:
config.hpp:185
GECODE_SUPPORT_EXPORT
#define GECODE_SUPPORT_EXPORT
Definition:
support.hh:71
n
int n
Number of negative literals for node type.
Definition:
bool-expr.cpp:234
p
int p
Number of positive literals for node type.
Definition:
bool-expr.cpp:232
Gecode::Support::Allocator::realloc
void * realloc(void *p, size_t n)
Return address of reallocated memory block p of size n.
Definition:
allocator.hpp:83