Listing 6: WinSTL access shims

/* /////////////////////////////////////////////////////////////
 * Extract from winstl_string_access.h
 *
 * www:    http://winstl.org/
 *
 * Copyright (C) 2002, Synesis Software Pty Ltd.
 * (Licensed under the Synesis Software Standard Source License:
 *  http://www.synesis.com.au/licenses/ssssl.html)
 * ////////////////////////////////////////////////////////// */

namespace winstl
{
  template <ws_typename_param_k C>
  class c_str_ptr_HWND_proxy
  {
  public:
      typedef C                       char_type;
      typedef c_str_ptr_HWND_proxy<C> class_type;

  // Construction
  public:
      ws_explicit_k c_str_ptr_HWND_proxy(HWND h);
      c_str_ptr_HWND_proxy(class_type &rhs);
      ~c_str_ptr_HWND_proxy();

  // Accessors
  public:
      operator char_type const *() const;

  // Implementation
    . . .

  // Members
  protected:
      char_type   *m_buffer;

  // Not to be implemented
  protected:
      void operator =(class_type const &rhs);
  };

  /* HWND */
  inline c_str_ptr_HWND_proxy<TCHAR> c_str_ptr(HWND h)
  {
    return c_str_ptr_HWND_proxy<TCHAR>(h);
  }
  /* LSA_UNICODE_STRING */
  inline c_str_ptr_LSA_UNICODE_STRING_proxy
    c_str_ptr(LSA_UNICODE_STRING const &s)
  {
    return c_str_ptr_LSA_UNICODE_STRING_proxy(s);
  }
} // namespace winstl