this repo has no description
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