]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Hide the implementation functions of EnableObserverPointer.
authorWolfgang Bangerth <bangerth@colostate.edu>
Wed, 18 Dec 2024 19:54:27 +0000 (12:54 -0700)
committerWolfgang Bangerth <bangerth@colostate.edu>
Thu, 19 Dec 2024 05:10:55 +0000 (22:10 -0700)
include/deal.II/base/enable_observer_pointer.h

index 1fffaa2c6c1dcf5da9d72b0529994f198dd20022..1da17d051047601bd4daa3f5e86893eb3517f910 100644 (file)
 
 DEAL_II_NAMESPACE_OPEN
 
+
+// Forward declaration
+template <typename T, typename P>
+class ObserverPointer;
+
+
 /**
  * This class supports the functioning of the ObserverPointer class.
  *
@@ -108,32 +114,11 @@ public:
   operator=(EnableObserverPointer &&) noexcept;
 
   /**
-   * @name EnableObserverPointer functionality
+   * @name Querying the observer pointers an object has.
    *
-   * Classes derived from EnableObserverPointer provide a facility
-   * to subscribe to this object. This is mostly used by the ObserverPointer
-   * class.
    * @{
    */
 
-  /**
-   * Subscribes a user of the object by storing the pointer @p validity. The
-   * subscriber may be identified by text supplied as @p identifier.
-   */
-  void
-  subscribe(std::atomic<bool> *const validity,
-            const std::string       &identifier = "") const;
-
-  /**
-   * Unsubscribes a user from the object.
-   *
-   * @note The @p identifier and the @p validity pointer must be the same as
-   * the one supplied to subscribe().
-   */
-  void
-  unsubscribe(std::atomic<bool> *const validity,
-              const std::string       &identifier = "") const;
-
   /**
    * Return the present number of subscriptions to this object. This allows to
    * use this class for reference counted lifetime determination where the
@@ -256,6 +241,40 @@ private:
    */
   mutable const std::type_info *object_info;
 
+  /**
+   * A mutex used to ensure data consistency when accessing the `mutable`
+   * members of this class. This lock is used in the subscribe() and
+   * unsubscribe() functions, as well as in `list_subscribers()`.
+   */
+  static std::mutex mutex;
+
+  /**
+   * @name EnableObserverPointer functionality
+   *
+   * Classes derived from EnableObserverPointer provide a facility
+   * to subscribe to this object. This is mostly used by the ObserverPointer
+   * class.
+   * @{
+   */
+
+  /**
+   * Subscribes a user of the object by storing the pointer @p validity. The
+   * subscriber may be identified by text supplied as @p identifier.
+   */
+  void
+  subscribe(std::atomic<bool> *const validity,
+            const std::string       &identifier = "") const;
+
+  /**
+   * Unsubscribes a user from the object.
+   *
+   * @note The @p identifier and the @p validity pointer must be the same as
+   * the one supplied to subscribe().
+   */
+  void
+  unsubscribe(std::atomic<bool> *const validity,
+              const std::string       &identifier = "") const;
+
   /**
    * Check that there are no objects subscribing to this object. If this check
    * passes then it is safe to destroy the current object. It this check fails
@@ -272,12 +291,10 @@ private:
   void
   check_no_subscribers() const noexcept;
 
-  /**
-   * A mutex used to ensure data consistency when accessing the `mutable`
-   * members of this class. This lock is used in the subscribe() and
-   * unsubscribe() functions, as well as in `list_subscribers()`.
-   */
-  static std::mutex mutex;
+  template <typename, typename>
+  friend class ObserverPointer;
+
+  /** @} */
 };
 
 

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.