Switch to side-by-side view

--- a/src/conf_post.h
+++ b/src/conf_post.h
@@ -1,4 +1,3 @@
-
 /* Copyright (C) 2016 J.F.Dockes
  *   This program is free software; you can redistribute it and/or modify
  *   it under the terms of the GNU General Public License as published by
@@ -16,9 +15,10 @@
  *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  */
 
-// conf_post: manual part included by auto-generated config.h. Avoid
-// being clobbered by autoheader, and undefine some problematic
-// symbols.
+/* conf_post: manual part included by auto-generated config.h. Avoid
+ * being clobbered by autoheader, and undefine some problematic
+ * symbols.
+ */
 
 // Get rid of macro names which could conflict with other package's
 #if defined(UPMPDCLI_NEED_PACKAGE_VERSION) && \
@@ -33,35 +33,47 @@
 #undef PACKAGE_URL
 #undef PACKAGE_VERSION
 
-#define HAVE_CXX0X_UNORDERED
-#define HAVE_SHARED_PTR_STD
-// upmpdcli: requires c++0x but we still need the defs for c++
-// versions below because of execmd et al.
-
+#ifdef __cplusplus
 #ifdef  HAVE_CXX0X_UNORDERED
 #  define UNORDERED_MAP_INCLUDE <unordered_map>
 #  define UNORDERED_SET_INCLUDE <unordered_set>
+#  include <functional>
 #  define STD_UNORDERED_MAP std::unordered_map
 #  define STD_UNORDERED_SET std::unordered_set
+#  define STD_FUNCTION      std::function
+#  define STD_BIND          std::bind
+#  define STD_PLACEHOLDERS  std::placeholders
 #elif defined(HAVE_TR1_UNORDERED)
 #  define UNORDERED_MAP_INCLUDE <tr1/unordered_map>
 #  define UNORDERED_SET_INCLUDE <tr1/unordered_set>
+#  include <tr1/functional>
 #  define STD_UNORDERED_MAP std::tr1::unordered_map
 #  define STD_UNORDERED_SET std::tr1::unordered_set
+#  define STD_FUNCTION      std::tr1::function
+#  define STD_BIND          std::tr1::bind
+#  define STD_PLACEHOLDERS  std::tr1::placeholders
 #else
 #  define UNORDERED_MAP_INCLUDE <map>
 #  define UNORDERED_SET_INCLUDE <set>
 #  define STD_UNORDERED_MAP std::map
 #  define STD_UNORDERED_SET std::set
+/* Yeah we're cooked if the code uses these features */
+#  define STD_FUNCTION 
+#  define STD_BIND
+#  define STD_PLACEHOLDERS
 #endif
 
 #ifdef HAVE_SHARED_PTR_STD
 #  define MEMORY_INCLUDE <memory>
 #  define STD_SHARED_PTR    std::shared_ptr
+#  define STD_WEAK_PTR      std::weak_ptr
 #elif defined(HAVE_SHARED_PTR_TR1)
 #  define MEMORY_INCLUDE <tr1/memory>
 #  define STD_SHARED_PTR    std::tr1::shared_ptr
+#  define STD_WEAK_PTR      std::tr1::weak_ptr
 #else
 #  define MEMORY_INCLUDE "refcntr.h"
 #  define STD_SHARED_PTR    RefCntr
 #endif
+
+#endif /* c++ */