00001 // -*- C++ -*- 00002 00003 // Copyright (C) 2007 Free Software Foundation, Inc. 00004 // 00005 // This file is part of the GNU ISO C++ Library. This library is free 00006 // software; you can redistribute it and/or modify it under the terms 00007 // of the GNU General Public License as published by the Free Software 00008 // Foundation; either version 2, or (at your option) any later 00009 // version. 00010 00011 // This library is distributed in the hope that it will be useful, but 00012 // WITHOUT ANY WARRANTY; without even the implied warranty of 00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00014 // General Public License for more details. 00015 00016 // You should have received a copy of the GNU General Public License 00017 // along with this library; see the file COPYING. If not, write to 00018 // the Free Software Foundation, 59 Temple Place - Suite 330, Boston, 00019 // MA 02111-1307, USA. 00020 00021 // As a special exception, you may use this file as part of a free 00022 // software library without restriction. Specifically, if other files 00023 // instantiate templates or use macros or inline functions from this 00024 // file, or you compile this file and link it with other files to 00025 // produce an executable, this file does not by itself cause the 00026 // resulting executable to be covered by the GNU General Public 00027 // License. This exception does not however invalidate any other 00028 // reasons why the executable file might be covered by the GNU General 00029 // Public License. 00030 00031 /** @file parallel/features.h 00032 * @brief Defines on whether to include algorithm variants. 00033 * 00034 * Less variants reduce executable size and compile time. 00035 * This file is a GNU parallel extension to the Standard C++ Library. 00036 */ 00037 00038 // Written by Johannes Singler. 00039 00040 #ifndef _GLIBCXX_PARALLEL_FEATURES_H 00041 #define _GLIBCXX_PARALLEL_FEATURES_H 1 00042 00043 #ifndef _GLIBCXX_MERGESORT 00044 /** @def _GLIBCXX_MERGESORT 00045 * @brief Include parallel multi-way mergesort. 00046 * @see __gnu_parallel::_Settings::sort_algorithm */ 00047 #define _GLIBCXX_MERGESORT 1 00048 #endif 00049 00050 #ifndef _GLIBCXX_QUICKSORT 00051 /** @def _GLIBCXX_QUICKSORT 00052 * @brief Include parallel unbalanced quicksort. 00053 * @see __gnu_parallel::_Settings::sort_algorithm */ 00054 #define _GLIBCXX_QUICKSORT 1 00055 #endif 00056 00057 #ifndef _GLIBCXX_BAL_QUICKSORT 00058 /** @def _GLIBCXX_BAL_QUICKSORT 00059 * @brief Include parallel dynamically load-balanced quicksort. 00060 * @see __gnu_parallel::_Settings::sort_algorithm */ 00061 #define _GLIBCXX_BAL_QUICKSORT 1 00062 #endif 00063 00064 #ifndef _GLIBCXX_LOSER_TREE 00065 /** @def _GLIBCXX_LOSER_TREE 00066 * @brief Include guarded (sequences may run empty) loser tree, 00067 * moving objects. 00068 * @see __gnu_parallel::_Settings multiway_merge_algorithm */ 00069 #define _GLIBCXX_LOSER_TREE 1 00070 #endif 00071 00072 #ifndef _GLIBCXX_LOSER_TREE_EXPLICIT 00073 /** @def _GLIBCXX_LOSER_TREE_EXPLICIT 00074 * @brief Include standard loser tree, storing two flags for infimum 00075 * and supremum. 00076 * @see __gnu_parallel::_Settings multiway_merge_algorithm */ 00077 #define _GLIBCXX_LOSER_TREE_EXPLICIT 0 00078 #endif 00079 00080 #ifndef _GLIBCXX_LOSER_TREE_REFERENCE 00081 /** @def _GLIBCXX_LOSER_TREE_REFERENCE 00082 * @brief Include some loser tree variant. 00083 * @see __gnu_parallel::_Settings multiway_merge_algorithm */ 00084 #define _GLIBCXX_LOSER_TREE_REFERENCE 0 00085 #endif 00086 00087 #ifndef _GLIBCXX_LOSER_TREE_POINTER 00088 /** @def _GLIBCXX_LOSER_TREE_POINTER 00089 * @brief Include some loser tree variant. 00090 * @see __gnu_parallel::_Settings multiway_merge_algorithm */ 00091 #define _GLIBCXX_LOSER_TREE_POINTER 1 00092 #endif 00093 00094 #ifndef _GLIBCXX_LOSER_TREE_UNGUARDED 00095 /** @def _GLIBCXX_LOSER_TREE_UNGUARDED 00096 * @brief Include unguarded (sequences must not run empty) loser 00097 * tree, moving objects. 00098 * @see __gnu_parallel::_Settings multiway_merge_algorithm */ 00099 #define _GLIBCXX_LOSER_TREE_UNGUARDED 0 00100 #endif 00101 00102 #ifndef _GLIBCXX_LOSER_TREE_POINTER_UNGUARDED 00103 /** @def _GLIBCXX_LOSER_TREE_POINTER_UNGUARDED 00104 * @brief Include some loser tree variant. 00105 * @see __gnu_parallel::_Settings multiway_merge_algorithm */ 00106 #define _GLIBCXX_LOSER_TREE_POINTER_UNGUARDED 1 00107 #endif 00108 00109 #ifndef _GLIBCXX_LOSER_TREE_COMBINED 00110 /** @def _GLIBCXX_LOSER_TREE_COMBINED 00111 * @brief Include some loser tree variant. 00112 * @see __gnu_parallel::_Settings multiway_merge_algorithm */ 00113 #define _GLIBCXX_LOSER_TREE_COMBINED 0 00114 #endif 00115 00116 #ifndef _GLIBCXX_LOSER_TREE_SENTINEL 00117 /** @def _GLIBCXX_LOSER_TREE_SENTINEL 00118 * @brief Include some loser tree variant. 00119 * @see __gnu_parallel::_Settings multiway_merge_algorithm */ 00120 #define _GLIBCXX_LOSER_TREE_SENTINEL 0 00121 #endif 00122 00123 00124 #ifndef _GLIBCXX_FIND_GROWING_BLOCKS 00125 /** @brief Include the growing blocks variant for std::find. 00126 * @see __gnu_parallel::_Settings::find_algorithm */ 00127 #define _GLIBCXX_FIND_GROWING_BLOCKS 1 00128 #endif 00129 00130 #ifndef _GLIBCXX_FIND_CONSTANT_SIZE_BLOCKS 00131 /** @brief Include the equal-sized blocks variant for std::find. 00132 * @see __gnu_parallel::_Settings::find_algorithm */ 00133 #define _GLIBCXX_FIND_CONSTANT_SIZE_BLOCKS 1 00134 #endif 00135 00136 #ifndef _GLIBCXX_FIND_EQUAL_SPLIT 00137 /** @def _GLIBCXX_FIND_EQUAL_SPLIT 00138 * @brief Include the equal splitting variant for std::find. 00139 * @see __gnu_parallel::_Settings::find_algorithm */ 00140 #define _GLIBCXX_FIND_EQUAL_SPLIT 1 00141 #endif 00142 00143 00144 #ifndef _GLIBCXX_TREE_INITIAL_SPLITTING 00145 /** @def _GLIBCXX_TREE_INITIAL_SPLITTING 00146 * @brief Include the initial splitting variant for 00147 * _Rb_tree::insert_unique(InputIterator beg, InputIterator end). 00148 * @see __gnu_parallel::_Rb_tree */ 00149 #define _GLIBCXX_TREE_INITIAL_SPLITTING 1 00150 #endif 00151 00152 #ifndef _GLIBCXX_TREE_DYNAMIC_BALANCING 00153 /** @def _GLIBCXX_TREE_DYNAMIC_BALANCING 00154 * @brief Include the dynamic balancing variant for 00155 * _Rb_tree::insert_unique(InputIterator beg, InputIterator end). 00156 * @see __gnu_parallel::_Rb_tree */ 00157 #define _GLIBCXX_TREE_DYNAMIC_BALANCING 1 00158 #endif 00159 00160 #ifndef _GLIBCXX_TREE_FULL_COPY 00161 /** @def _GLIBCXX_TREE_FULL_COPY 00162 * @brief In order to sort the input sequence of 00163 * _Rb_tree::insert_unique(InputIterator beg, InputIterator end) a 00164 * full copy of the input elements is done. 00165 * @see __gnu_parallel::_Rb_tree */ 00166 #define _GLIBCXX_TREE_FULL_COPY 1 00167 #endif 00168 00169 00170 #endif