From: Andrew Gallagher Date: Wed, 8 Aug 2012 19:05:18 +0000 (-0700) Subject: folly::dynamic: use std::vector instead of folly::fbvector X-Git-Tag: v0.22.0~1224 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=192cff5da4fedc44707e34c9a7e0dc8ddc4e5eb7;p=folly.git folly::dynamic: use std::vector instead of folly::fbvector Summary: It appears that std::unordered_map is no longer relocatable in gcc-4.7. Use std::vector instead, until fbvector supports non- relocatable types. Test Plan: Built and ran facebar tests under gcc-4.7. Also ran folly unittests. Reviewed By: andrei.alexandrescu@fb.com FB internal diff: D543099 --- diff --git a/folly/dynamic-inl.h b/folly/dynamic-inl.h index 4a7c3c54..94ddea4c 100644 --- a/folly/dynamic-inl.h +++ b/folly/dynamic-inl.h @@ -586,12 +586,16 @@ inline std::size_t dynamic::erase(dynamic const& key) { } inline dynamic::const_iterator dynamic::erase(const_iterator it) { - return get().erase(it); + auto& arr = get(); + return get().erase(arr.begin() + (it - arr.begin())); } inline dynamic::const_iterator dynamic::erase(const_iterator first, const_iterator last) { - return get().erase(first, last); + auto& arr = get(); + return get().erase( + arr.begin() + (first - arr.begin()), + arr.begin() + (last - arr.begin())); } inline dynamic::const_key_iterator dynamic::erase(const_key_iterator it) { diff --git a/folly/dynamic.h b/folly/dynamic.h index 6a5fe0bd..3defcfaf 100644 --- a/folly/dynamic.h +++ b/folly/dynamic.h @@ -70,11 +70,11 @@ #include #include #include +#include #include #include #include "folly/Traits.h" -#include "folly/FBVector.h" #include "folly/FBString.h" namespace folly { @@ -83,7 +83,6 @@ namespace folly { struct dynamic; struct TypeError; -template<> FOLLY_ASSUME_RELOCATABLE(dynamic); ////////////////////////////////////////////////////////////////////// @@ -108,7 +107,7 @@ struct dynamic : private boost::operators { * Object item iterators dereference as pairs of (key, value). */ private: - typedef fbvector Array; + typedef std::vector Array; public: typedef Array::const_iterator const_iterator; struct const_key_iterator;