Supporters update.
[dcpomatic.git] / src / lib / compose.hpp
index 44f08e71594e5379ff72b228853a69abf7b3b41c..479493f1461e5e7b0b9ab012eed013bfb96acc35 100644 (file)
 // more details.
 //
 
-#ifndef STRING_COMPOSE_H
-#define STRING_COMPOSE_H
+#ifndef DCPOMATIC_STRING_COMPOSE_H
+#define DCPOMATIC_STRING_COMPOSE_H
 
+#include <dcp/locale_convert.h>
 #include <boost/filesystem.hpp>
 #include <string>
 #include <list>
@@ -113,112 +114,11 @@ namespace StringPrivate
     }
   }
 
-  template <typename T>
-  inline void write(std::string& s, const T& obj)
-  {
-    /* Assume anything not specialized has a to_string() method */
-    s += to_string (obj);
-  }
-
-  template <>
-  inline void write(std::string& s, const int64_t& obj)
-  {
-    char buffer[64];
-#ifdef DCPOMATIC_WINDOWS
-    __mingw_snprintf(buffer, 64, "%" PRId64, obj);
-#else
-    snprintf(buffer, 64, "%" PRId64, obj);
-#endif
-    s += buffer;
-  }
-
-  template <>
-  inline void write(std::string& s, const uint64_t& obj)
-  {
-    char buffer[64];
-#ifdef DCPOMATIC_WINDOWS
-    __mingw_snprintf(buffer, 64, "%" PRud64, obj);
-#else
-    snprintf(buffer, 64, "%" PRIu64, obj);
-#endif
-    s += buffer;
-  }
-
-  template <>
-  inline void write(std::string& s, const int& obj)
-  {
-    char buffer[64];
-    snprintf(buffer, 64, "%d", obj);
-    s += buffer;
-  }
-
-  template <>
-  inline void write(std::string& s, const unsigned int& obj)
-  {
-    char buffer[64];
-    snprintf(buffer, 64, "%ud", obj);
-    s += buffer;
-  }
-
-  template <>
-  inline void write(std::string& s, const long unsigned int& obj)
-  {
-    char buffer[64];
-    snprintf(buffer, 64, "%lu", obj);
-    s += buffer;
-  }
-
-  template <>
-  inline void write(std::string& s, const float& obj)
-  {
-    char buffer[64];
-    snprintf(buffer, 64, "%f", obj);
-    s += buffer;
-  }
-
-  template <>
-  inline void write(std::string& s, const char& obj)
-  {
-    s += obj;
-  }
-
-  template <>
-  inline void write(std::string& s, const double& obj)
-  {
-    char buffer[64];
-    snprintf(buffer, 64, "%f", obj);
-    s += buffer;
-  }
-
-  template <>
-  inline void write(std::string& s, char const * const & obj)
-  {
-    s += obj;
-  }
-
-  template <>
-  inline void write(std::string& s, char* const & obj)
-  {
-    s += obj;
-  }
-
-  template <>
-  inline void write(std::string& s, const std::string& obj)
-  {
-    s += obj;
-  }
-
-  template <>
-  inline void write(std::string& s, const boost::filesystem::path & obj)
-  {
-    s += obj.string();
-  }
-
   // implementation of class Composition
   template <typename T>
   inline Composition &Composition::arg(const T &obj)
   {
-    write(os, obj);
+    os += dcp::locale_convert<std::string>(obj);
 
     if (!os.empty()) {         // manipulators don't produce output
       for (specification_map::const_iterator i = specs.lower_bound(arg_no), end = specs.upper_bound(arg_no); i != end; ++i) {