main page
modules
namespaces
classes
files
Gecode home
Generated on Thu Jan 16 2025 00:00:00 for Gecode by
doxygen
1.14.0
gecode
support.hh
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, 2007
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
#ifndef __GECODE_SUPPORT_HH__
35
#define __GECODE_SUPPORT_HH__
36
37
#include <cassert>
38
39
#include <
gecode/support/config.hpp
>
40
41
/*
42
* Linking and compiler workarounds
43
*
44
*/
45
#if !defined(GECODE_STATIC_LIBS) && \
46
(defined(__CYGWIN__) || defined(__MINGW32__) || defined(_MSC_VER))
47
54
#define GECODE_MSC_VIRTUAL virtual
55
56
#ifdef GECODE_BUILD_SUPPORT
57
#define GECODE_SUPPORT_EXPORT __declspec( dllexport )
58
#else
59
#define GECODE_SUPPORT_EXPORT __declspec( dllimport )
60
#endif
61
#define GECODE_VTABLE_EXPORT
62
63
#else
64
65
#define GECODE_MSC_VIRTUAL
66
67
#ifdef GECODE_GCC_HAS_CLASS_VISIBILITY
68
#define GECODE_SUPPORT_EXPORT __attribute__ ((visibility("default")))
69
#define GECODE_VTABLE_EXPORT __attribute__ ((visibility("default")))
70
#else
71
#define GECODE_SUPPORT_EXPORT
72
#define GECODE_VTABLE_EXPORT
73
#endif
74
75
#endif
76
77
// Configure auto-linking
78
#ifndef GECODE_BUILD_SUPPORT
79
#define GECODE_LIBRARY_NAME "Support"
80
#include <
gecode/support/auto-link.hpp
>
81
#endif
82
83
// Configure threads
84
#ifdef GECODE_THREADS_WINDOWS
85
#define GECODE_HAS_THREADS
86
#endif
87
88
#ifdef GECODE_THREADS_PTHREADS
89
#define GECODE_HAS_THREADS
90
#endif
91
92
93
/*
94
* Basic support needed everywhere
95
*
96
*/
97
98
#include <
gecode/support/macros.hpp
>
99
#include <
gecode/support/exception.hpp
>
100
#include <
gecode/support/cast.hpp
>
101
#include <
gecode/support/hash.hpp
>
102
#include <
gecode/support/thread.hpp
>
103
#include <
gecode/support/allocator.hpp
>
104
#include <
gecode/support/heap.hpp
>
105
#include <
gecode/support/marked-pointer.hpp
>
106
#include <
gecode/support/int-type.hpp
>
107
108
/*
109
* Common datastructures and algorithms
110
*
111
*/
112
113
#include <
gecode/support/bitset-base.hpp
>
114
#include <
gecode/support/bitset.hpp
>
115
#include <
gecode/support/bitset-offset.hpp
>
116
#include <
gecode/support/block-allocator.hpp
>
117
#include <
gecode/support/dynamic-array.hpp
>
118
#include <
gecode/support/dynamic-queue.hpp
>
119
#include <
gecode/support/dynamic-stack.hpp
>
120
#include <
gecode/support/random.hpp
>
121
#include <
gecode/support/sort.hpp
>
122
#include <
gecode/support/static-stack.hpp
>
123
124
125
/*
126
* Operating system support
127
*
128
*/
129
130
#ifdef GECODE_THREADS_WINDOWS
131
#include <
gecode/support/thread/windows.hpp
>
132
#endif
133
#ifdef GECODE_THREADS_PTHREADS
134
#include <
gecode/support/thread/pthreads.hpp
>
135
#endif
136
#ifndef GECODE_HAS_THREADS
137
#include <
gecode/support/thread/none.hpp
>
138
#endif
139
140
#include <
gecode/support/thread/thread.hpp
>
141
142
#include <
gecode/support/ref-count.hpp
>
143
144
#include <
gecode/support/timer.hpp
>
145
#include <
gecode/support/hw-rnd.hpp
>
146
147
/*
148
* Miscellaneous
149
*
150
*/
151
152
#include <
gecode/support/run-jobs.hpp
>
153
154
#endif
155
156
// STATISTICS: support-any
allocator.hpp
auto-link.hpp
bitset-base.hpp
bitset-offset.hpp
bitset.hpp
block-allocator.hpp
cast.hpp
dynamic-array.hpp
dynamic-queue.hpp
dynamic-stack.hpp
hash.hpp
heap.hpp
hw-rnd.hpp
int-type.hpp
marked-pointer.hpp
none.hpp
pthreads.hpp
random.hpp
ref-count.hpp
run-jobs.hpp
static-stack.hpp
config.hpp
exception.hpp
macros.hpp
sort.hpp
thread.hpp
thread.hpp
timer.hpp
windows.hpp