diff --git a/src/msgpack/type/tr1/unordered_map.hpp b/src/msgpack/type/tr1/unordered_map.hpp index 4b29f0ca..79da7fc3 100644 --- a/src/msgpack/type/tr1/unordered_map.hpp +++ b/src/msgpack/type/tr1/unordered_map.hpp @@ -19,13 +19,25 @@ #define MSGPACK_TYPE_TR1_UNORDERED_MAP_HPP__ #include "msgpack/object.hpp" + +#if defined(_LIBCPP_VERSION) + +#include +#define MSGPACK_STD_TR1 std + +#else // _LIBCPP_VERSION + #include +#define MSGPACK_STD_TR1 std::tr1 + +#endif // _LIBCPP_VERSION + namespace msgpack { template -inline std::tr1::unordered_map operator>> (object o, std::tr1::unordered_map& v) +inline MSGPACK_STD_TR1::unordered_map operator>> (object o, MSGPACK_STD_TR1::unordered_map& v) { if(o.type != type::MAP) { throw type_error(); } object_kv* p(o.via.map.ptr); @@ -39,10 +51,10 @@ inline std::tr1::unordered_map operator>> (object o, std::tr1::unordered_m } template -inline packer& operator<< (packer& o, const std::tr1::unordered_map& v) +inline packer& operator<< (packer& o, const MSGPACK_STD_TR1::unordered_map& v) { o.pack_map(v.size()); - for(typename std::tr1::unordered_map::const_iterator it(v.begin()), it_end(v.end()); + for(typename MSGPACK_STD_TR1::unordered_map::const_iterator it(v.begin()), it_end(v.end()); it != it_end; ++it) { o.pack(it->first); o.pack(it->second); @@ -51,7 +63,7 @@ inline packer& operator<< (packer& o, const std::tr1::unordered_ } template -inline void operator<< (object::with_zone& o, const std::tr1::unordered_map& v) +inline void operator<< (object::with_zone& o, const MSGPACK_STD_TR1::unordered_map& v) { o.type = type::MAP; if(v.empty()) { @@ -62,7 +74,7 @@ inline void operator<< (object::with_zone& o, const std::tr1::unordered_map object_kv* const pend = p + v.size(); o.via.map.ptr = p; o.via.map.size = v.size(); - typename std::tr1::unordered_map::const_iterator it(v.begin()); + typename MSGPACK_STD_TR1::unordered_map::const_iterator it(v.begin()); do { p->key = object(it->first, o.zone); p->val = object(it->second, o.zone); @@ -74,7 +86,7 @@ inline void operator<< (object::with_zone& o, const std::tr1::unordered_map template -inline std::tr1::unordered_multimap operator>> (object o, std::tr1::unordered_multimap& v) +inline MSGPACK_STD_TR1::unordered_multimap operator>> (object o, MSGPACK_STD_TR1::unordered_multimap& v) { if(o.type != type::MAP) { throw type_error(); } object_kv* p(o.via.map.ptr); @@ -89,10 +101,10 @@ inline std::tr1::unordered_multimap operator>> (object o, std::tr1::unorde } template -inline packer& operator<< (packer& o, const std::tr1::unordered_multimap& v) +inline packer& operator<< (packer& o, const MSGPACK_STD_TR1::unordered_multimap& v) { o.pack_map(v.size()); - for(typename std::tr1::unordered_multimap::const_iterator it(v.begin()), it_end(v.end()); + for(typename MSGPACK_STD_TR1::unordered_multimap::const_iterator it(v.begin()), it_end(v.end()); it != it_end; ++it) { o.pack(it->first); o.pack(it->second); @@ -101,7 +113,7 @@ inline packer& operator<< (packer& o, const std::tr1::unordered_ } template -inline void operator<< (object::with_zone& o, const std::tr1::unordered_multimap& v) +inline void operator<< (object::with_zone& o, const MSGPACK_STD_TR1::unordered_multimap& v) { o.type = type::MAP; if(v.empty()) { @@ -112,7 +124,7 @@ inline void operator<< (object::with_zone& o, const std::tr1::unordered_multimap object_kv* const pend = p + v.size(); o.via.map.ptr = p; o.via.map.size = v.size(); - typename std::tr1::unordered_multimap::const_iterator it(v.begin()); + typename MSGPACK_STD_TR1::unordered_multimap::const_iterator it(v.begin()); do { p->key = object(it->first, o.zone); p->val = object(it->second, o.zone); @@ -125,5 +137,7 @@ inline void operator<< (object::with_zone& o, const std::tr1::unordered_multimap } // namespace msgpack +#undef MSGPACK_STD_TR1 + #endif /* msgpack/type/map.hpp */ diff --git a/src/msgpack/type/tr1/unordered_set.hpp b/src/msgpack/type/tr1/unordered_set.hpp index 4af6801c..d29dc3e5 100644 --- a/src/msgpack/type/tr1/unordered_set.hpp +++ b/src/msgpack/type/tr1/unordered_set.hpp @@ -19,13 +19,24 @@ #define MSGPACK_TYPE_TR1_UNORDERED_SET_HPP__ #include "msgpack/object.hpp" + +#if defined(_LIBCPP_VERSION) + +#include +#define MSGPACK_STD_TR1 std + +#else // _LIBCPP_VERSION + #include +#define MSGPACK_STD_TR1 std::tr1 + +#endif // _LIBCPP_VERSION namespace msgpack { template -inline std::tr1::unordered_set& operator>> (object o, std::tr1::unordered_set& v) +inline MSGPACK_STD_TR1::unordered_set& operator>> (object o, MSGPACK_STD_TR1::unordered_set& v) { if(o.type != type::ARRAY) { throw type_error(); } object* p = o.via.array.ptr + o.via.array.size; @@ -38,10 +49,10 @@ inline std::tr1::unordered_set& operator>> (object o, std::tr1::unordered_set } template -inline packer& operator<< (packer& o, const std::tr1::unordered_set& v) +inline packer& operator<< (packer& o, const MSGPACK_STD_TR1::unordered_set& v) { o.pack_array(v.size()); - for(typename std::tr1::unordered_set::const_iterator it(v.begin()), it_end(v.end()); + for(typename MSGPACK_STD_TR1::unordered_set::const_iterator it(v.begin()), it_end(v.end()); it != it_end; ++it) { o.pack(*it); } @@ -49,7 +60,7 @@ inline packer& operator<< (packer& o, const std::tr1::unordered_ } template -inline void operator<< (object::with_zone& o, const std::tr1::unordered_set& v) +inline void operator<< (object::with_zone& o, const MSGPACK_STD_TR1::unordered_set& v) { o.type = type::ARRAY; if(v.empty()) { @@ -60,7 +71,7 @@ inline void operator<< (object::with_zone& o, const std::tr1::unordered_set& object* const pend = p + v.size(); o.via.array.ptr = p; o.via.array.size = v.size(); - typename std::tr1::unordered_set::const_iterator it(v.begin()); + typename MSGPACK_STD_TR1::unordered_set::const_iterator it(v.begin()); do { *p = object(*it, o.zone); ++p; @@ -71,7 +82,7 @@ inline void operator<< (object::with_zone& o, const std::tr1::unordered_set& template -inline std::tr1::unordered_multiset& operator>> (object o, std::tr1::unordered_multiset& v) +inline MSGPACK_STD_TR1::unordered_multiset& operator>> (object o, MSGPACK_STD_TR1::unordered_multiset& v) { if(o.type != type::ARRAY) { throw type_error(); } object* p = o.via.array.ptr + o.via.array.size; @@ -84,10 +95,10 @@ inline std::tr1::unordered_multiset& operator>> (object o, std::tr1::unordere } template -inline packer& operator<< (packer& o, const std::tr1::unordered_multiset& v) +inline packer& operator<< (packer& o, const MSGPACK_STD_TR1::unordered_multiset& v) { o.pack_array(v.size()); - for(typename std::tr1::unordered_multiset::const_iterator it(v.begin()), it_end(v.end()); + for(typename MSGPACK_STD_TR1::unordered_multiset::const_iterator it(v.begin()), it_end(v.end()); it != it_end; ++it) { o.pack(*it); } @@ -95,7 +106,7 @@ inline packer& operator<< (packer& o, const std::tr1::unordered_ } template -inline void operator<< (object::with_zone& o, const std::tr1::unordered_multiset& v) +inline void operator<< (object::with_zone& o, const MSGPACK_STD_TR1::unordered_multiset& v) { o.type = type::ARRAY; if(v.empty()) { @@ -106,7 +117,7 @@ inline void operator<< (object::with_zone& o, const std::tr1::unordered_multiset object* const pend = p + v.size(); o.via.array.ptr = p; o.via.array.size = v.size(); - typename std::tr1::unordered_multiset::const_iterator it(v.begin()); + typename MSGPACK_STD_TR1::unordered_multiset::const_iterator it(v.begin()); do { *p = object(*it, o.zone); ++p; @@ -118,5 +129,7 @@ inline void operator<< (object::with_zone& o, const std::tr1::unordered_multiset } // namespace msgpack +#undef MSGPACK_STD_TR1 + #endif /* msgpack/type/set.hpp */