--- /dev/null
+////////////////////////////////////////////////////////////////////////////////\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
+////////////////////////////////////////////////////////////////////////////////\r
+\r
+namespace stlplus\r
+{\r
+\r
+ template<typename T, typename S>\r
+ void print_simple_ptr(std::ostream& device,\r
+ const simple_ptr<T>& value,\r
+ S print_fn,\r
+ const std::string& null_string,\r
+ const std::string& prefix,\r
+ const std::string& suffix)\r
+ {\r
+ if (value)\r
+ {\r
+ device << prefix;\r
+ print_fn(device, *value);\r
+ device << suffix;\r
+ }\r
+ else\r
+ {\r
+ device << null_string;\r
+ }\r
+ }\r
+\r
+ template<typename T, typename S>\r
+ void print_simple_ptr_clone(std::ostream& device,\r
+ const simple_ptr_clone<T>& value,\r
+ S print_fn,\r
+ const std::string& null_string,\r
+ const std::string& prefix,\r
+ const std::string& suffix)\r
+ {\r
+ if (value)\r
+ {\r
+ device << prefix;\r
+ print_fn(device, *value);\r
+ device << suffix;\r
+ }\r
+ else\r
+ {\r
+ device << null_string;\r
+ }\r
+ }\r
+\r
+ template<typename T, typename S>\r
+ void print_simple_ptr_nocopy(std::ostream& device,\r
+ const simple_ptr_nocopy<T>& value,\r
+ S print_fn,\r
+ const std::string& null_string,\r
+ const std::string& prefix,\r
+ const std::string& suffix)\r
+ {\r
+ if (value)\r
+ {\r
+ device << prefix;\r
+ print_fn(device, *value);\r
+ device << suffix;\r
+ }\r
+ else\r
+ {\r
+ device << null_string;\r
+ }\r
+ }\r
+\r
+} // end namespace stlplus\r
+\r