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 48 /** 49 * \brief Workaround for a bug in the Microsoft C++ compiler 50 * 51 * Details for the bug can be found at 52 * http://support.microsoft.com/?scid=kb%3Ben-us%3B122675&x=9&y=13 53 */ 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 157