+#ifndef STLPLUS_PRINT_SMART_PTR\r
+#define STLPLUS_PRINT_SMART_PTR\r
+////////////////////////////////////////////////////////////////////////////////\r
+\r
+// Author: Andy Rushton\r
+// Copyright: (c) Southampton University 1999-2004\r
+// (c) Andy Rushton 2004-2009\r
+// License: BSD License, see ../docs/license.html\r
+\r
+// Generate a string representation of a smart pointer\r
+\r
+////////////////////////////////////////////////////////////////////////////////\r
+#include "strings_fixes.hpp"\r
+#include "smart_ptr.hpp"\r
+#include <string>\r
+#include <iostream>\r
+\r
+////////////////////////////////////////////////////////////////////////////////\r
+\r
+namespace stlplus\r
+{\r
+\r
+ template<typename T, typename S>\r
+ void print_smart_ptr(std::ostream& device,\r
+ const smart_ptr<T>& value,\r
+ S print_fn,\r
+ const std::string& null_string = "<null>",\r
+ const std::string& prefix = "(",\r
+ const std::string& suffix = ")");\r
+\r
+ template<typename T, typename S>\r
+ void print_smart_ptr_clone(std::ostream& device,\r
+ const smart_ptr_clone<T>& value,\r
+ S print_fn,\r
+ const std::string& null_string = "<null>",\r
+ const std::string& prefix = "(",\r
+ const std::string& suffix = ")");\r
+\r
+ template<typename T, typename S>\r
+ void print_smart_ptr_nocopy(std::ostream& device,\r
+ const smart_ptr_nocopy<T>& value,\r
+ S print_fn,\r
+ const std::string& null_string = "<null>",\r
+ const std::string& prefix = "(",\r
+ const std::string& suffix = ")");\r
+\r
+\r
+} // end namespace stlplus\r
+\r
+#include "print_smart_ptr.tpp"\r
+#endif\r