From 2fe29fe958e659fd6809bd9356ad321ee686ec31 Mon Sep 17 00:00:00 2001 From: wolf Date: Fri, 16 May 2003 21:14:22 +0000 Subject: [PATCH] Move two classes out of Subscriptor, and into a namespace "internal", to avoid cluttering up the class view. git-svn-id: https://svn.dealii.org/trunk@7655 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/base/include/base/subscriptor.h | 123 +++++++++++++----------- 1 file changed, 67 insertions(+), 56 deletions(-) diff --git a/deal.II/base/include/base/subscriptor.h b/deal.II/base/include/base/subscriptor.h index 9dd661f3d8..37648b2705 100644 --- a/deal.II/base/include/base/subscriptor.h +++ b/deal.II/base/include/base/subscriptor.h @@ -19,6 +19,72 @@ #include +namespace internal +{ + /** + * A namespace in which we + * implement helper classes for the + * subscriptor class. + */ + namespace Subscriptor + { + /** + * Template class that declares + * in inner typedef with the + * following semantics: if the + * first template parameter is + * @p{true}, then the inner + * typedef is @p{volatile T}, + * otherwise @p{T}. We achieve + * this behavior by partial + * specialization of the general + * template for both values of + * the boolean argument. + * + * This trick is used to declare + * the type of the counter + * variable to be eiter volatile + * or not, depending on whether + * we are in multithreaded mode + * or not. (If we are in MT mode, + * then we need the @p{volatile} + * specifier since more than one + * thread my modify the counter + * at the same time. + * + * Since we only partially + * specialize the case that the + * boolean template argument is + * @p{false}, this general + * template catches the case that + * it is @p{true}, i.e. in a + * sense it is also a + * specialization since a + * @p{bool} can only have two + * states. + * + * @author Wolfgang Bangerth, 2003 + */ + template struct PossiblyVolatile + { + typedef volatile T type; + }; + + /** + * Specialization of the template + * for the case that the first + * template argument is + * @p{false}, i.e. the + * non-volatile case. + */ + template struct PossiblyVolatile + { + typedef T type; + }; + } +} + + /** * Handling of subscriptions. @@ -105,61 +171,6 @@ class Subscriptor private: - /** - * Template class that declares - * in inner typedef with the - * following semantics: if the - * first template parameter is - * @p{true}, then the inner - * typedef is @p{volatile T}, - * otherwise @p{T}. We achieve - * this behavior by partial - * specialization of the general - * template for both values of - * the boolean argument. - * - * This trick is used to declare - * the type of the counter - * variable to be eiter volatile - * or not, depending on whether - * we are in multithreaded mode - * or not. (If we are in MT mode, - * then we need the @p{volatile} - * specifier since more than one - * thread my modify the counter - * at the same time. - * - * Since we only partially - * specialize the case that the - * boolean template argument is - * @p{false}, this general - * template catches the case that - * it is @p{true}, i.e. in a - * sense it is also a - * specialization since a - * @p{bool} can only have two - * states. - * - * @author Wolfgang Bangerth, 2003 - */ - template struct PossiblyVolatile - { - typedef volatile T type; - }; - - /** - * Specialization of the template - * for the case that the first - * template argument is - * @p{false}, i.e. the - * non-volatile case. - */ - template struct PossiblyVolatile - { - typedef T type; - }; - - /** * Store the number of objects * which subscribed to this @@ -188,7 +199,7 @@ class Subscriptor * template class to selectively * add volatility. */ - mutable PossiblyVolatile::type counter; + mutable internal::Subscriptor::PossiblyVolatile::type counter; /** * Pointer to the typeinfo object -- 2.39.5