40/// This component provides a single class `ball::ObserverAdapter`
41/// that aids in the implementation of the `ball::Observer` protocol by allowing
42/// clients to implement that protocol by implementing a single method
43/// signature: `publish(const ball::Record&, const ball::Context&)`. A primary
44/// goal of this component is to simplify the transition for older
45/// implementations of the `ball::Observer` protocol (that accept
46/// const-references to `ball::Record` objects) to the updated protocol (that
47/// accepts shared-pointers to `ball::Record` objects). `ball::ObserverAdapter`
48/// inherits from `ball::Observer`, and implements the (newer) overload of the
49/// `publish` method in (accepting a shared-pointer to a record) by calling the
50/// overload of the `publish` method (accepting a reference to a record).
51///
52/// ## Usage {#ball_observeradapter-usage}
53///
54///
55/// This section illustrates intended use of this component.
56///
57/// ### Example 1: Concrete Observer Derived From ball::ObserverAdapter {#ball_observeradapter-example-1-concrete-observer-derived-from-ball-observeradapter}
58///
59///
60/// The following code fragments illustrate the essentials of defining and using
61/// a concrete observer inherited from `ball::ObserverAdapter`.
62///
63/// First define a concrete observer `MyOstreamObserver` derived from
64/// `ball::ObserverAdapter` that declares a single publish method accepting a
65/// const-reference to a `ball::Record` object:
66/// @code
67/// class MyOstreamObserver : public ball::ObserverAdapter {