Listing 1: The SwitchBoard class

 // forward declares
class SubscriberHookup;

class SwitchBoard
{
  friend class SubscriberHookup;

private:
  // handle to singleton instance
  static SwitchBoard* _self;
  // array of subscribing object hookups
  // (NULL terminated)
  SubscriberHookup**  _hookups; 
  int  _thookups; // total number of subscriber hookups
protected:
  // singleton constructor
  SwitchBoard();

  // api implementation
  void _subscribe
          (SubscriberHookup* hookup);
  void _unsubscribe
          (SubscriberHookup* hookup);

  bool _post(const char* subscription);

public:
  // singleton access
  static SwitchBoard& instance();

  // message dispatching
  static bool
  post(const char* subscription) {
    return(instance()._post(subscription));
  }
};
/* End of File */