tags.h

Go to the documentation of this file.
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 /**
00032  * @file parallel/tags.h
00033  * @brief Tags for compile-time selection.
00034  *  This file is a GNU parallel extension to the Standard C++ Library.
00035  */
00036 
00037 // Written by Johannes Singler and Felix Putze.
00038 
00039 #ifndef _GLIBCXX_PARALLEL_TAGS_H
00040 #define _GLIBCXX_PARALLEL_TAGS_H 1
00041 
00042 namespace __gnu_parallel
00043 {
00044   /** @brief Forces sequential execution at compile time. */
00045   struct sequential_tag { };
00046 
00047   /** @brief Forces exact splitting in multiway merge at compile time. */
00048   struct exact_tag { };
00049 
00050   /** @brief Recommends parallel execution at compile time. */
00051   struct parallel_tag { };
00052 
00053   /** @brief Recommends parallel execution using dynamic
00054       load-balancing at compile time. */
00055   struct balanced_tag : public parallel_tag { };
00056 
00057   /** @brief Recommends parallel execution using static
00058       load-balancing at compile time. */
00059   struct unbalanced_tag : public parallel_tag { };
00060 
00061   /** @brief Recommends parallel execution using OpenMP dynamic
00062       load-balancing at compile time. */
00063   struct omp_loop_tag : public parallel_tag { };
00064 
00065   /** @brief Recommends parallel execution using OpenMP static
00066       load-balancing at compile time. */
00067   struct omp_loop_static_tag : public parallel_tag { };
00068 
00069 
00070   struct find_tag { };
00071 
00072   /** @brief Selects the growing block size variant for std::find().
00073       @see _GLIBCXX_FIND_GROWING_BLOCKS */
00074   struct growing_blocks_tag : public find_tag { };
00075 
00076   /** @brief Selects the constant block size variant for std::find().
00077       @see _GLIBCXX_FIND_CONSTANT_SIZE_BLOCKS */
00078   struct constant_size_blocks_tag : public find_tag { };
00079 
00080   /** @brief Selects the equal splitting variant for std::find().
00081       @see _GLIBCXX_FIND_EQUAL_SPLIT */
00082   struct equal_split_tag : public find_tag { };
00083 }
00084 
00085 #endif /* _GLIBCXX_PARALLEL_TAGS_H */

Generated on Wed Dec 31 12:49:05 2008 for libstdc++ by  doxygen 1.5.6