Sha256: 4a6b968de9a5a35750504e5b4e4320176fb43219de5bacb7714149db5ffe4b7c

Contents?: true

Size: 1.34 KB

Versions: 24

Compression:

Stored size: 1.34 KB

Contents

// Copyright (c) 2018-2020 Dr. Colin Hirsch and Daniel Frey
// Please see LICENSE for license or visit https://github.com/taocpp/json/

#ifndef TAO_JSON_CONTRIB_UNORDERED_MAP_TRAITS_HPP
#define TAO_JSON_CONTRIB_UNORDERED_MAP_TRAITS_HPP

#include <string>
#include <unordered_map>

#include "../consume.hpp"
#include "../forward.hpp"

#include "internal/object_traits.hpp"

namespace tao::json
{
   template< typename T, typename... Ts >
   struct unordered_map_traits
      : internal::object_traits< std::unordered_map< std::string, T, Ts... > >
   {
      template< template< typename... > class Traits, typename... With >
      static void to( const basic_value< Traits >& v, std::unordered_map< std::string, T, Ts... >& r, With&... with )
      {
         const auto& o = v.get_object();
         for( const auto& i : o ) {
            r.try_emplace( i.first, Traits< T >::as( i.second, with... ) );
         }
      }

      template< template< typename... > class Traits, typename Producer >
      static void consume( Producer& parser, std::unordered_map< std::string, T, Ts... >& v )
      {
         auto s = parser.begin_object();
         while( parser.member_or_end_object( s ) ) {
            auto k = parser.key();
            v.try_emplace( std::move( k ), json::consume< T, Traits >( parser ) );
         }
      }
   };

}  // namespace tao::json

#endif

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
couchbase-3.0.0-universal-darwin-19 ext/third_party/json/include/tao/json/contrib/unordered_map_traits.hpp
couchbase-3.0.0 ext/third_party/json/include/tao/json/contrib/unordered_map_traits.hpp
couchbase-3.0.0.beta.1-universal-darwin-19 ext/third_party/json/include/tao/json/contrib/unordered_map_traits.hpp
couchbase-3.0.0.beta.1 ext/third_party/json/include/tao/json/contrib/unordered_map_traits.hpp
couchbase-3.0.0.alpha.5-x86_64-linux ext/third_party/json/include/tao/json/contrib/unordered_map_traits.hpp
couchbase-3.0.0.alpha.5-universal-darwin-19 ext/third_party/json/include/tao/json/contrib/unordered_map_traits.hpp
couchbase-3.0.0.alpha.5-x86_64-darwin-19 ext/third_party/json/include/tao/json/contrib/unordered_map_traits.hpp
couchbase-3.0.0.alpha.5 ext/third_party/json/include/tao/json/contrib/unordered_map_traits.hpp
couchbase-3.0.0.alpha.4-x86_64-linux ext/third_party/json/include/tao/json/contrib/unordered_map_traits.hpp
couchbase-3.0.0.alpha.4-x86_64-darwin-19 ext/third_party/json/include/tao/json/contrib/unordered_map_traits.hpp
couchbase-3.0.0.alpha.4-universal-darwin-19 ext/third_party/json/include/tao/json/contrib/unordered_map_traits.hpp
couchbase-3.0.0.alpha.4 ext/third_party/json/include/tao/json/contrib/unordered_map_traits.hpp
couchbase-3.0.0.alpha.3-x86_64-linux ext/third_party/json/include/tao/json/contrib/unordered_map_traits.hpp
couchbase-3.0.0.alpha.3-x86_64-darwin-19 ext/third_party/json/include/tao/json/contrib/unordered_map_traits.hpp
couchbase-3.0.0.alpha.3-universal-darwin-19 ext/third_party/json/include/tao/json/contrib/unordered_map_traits.hpp
couchbase-3.0.0.alpha.3 ext/third_party/json/include/tao/json/contrib/unordered_map_traits.hpp
couchbase-3.0.0.alpha.2-x86_64-linux ext/third_party/json/include/tao/json/contrib/unordered_map_traits.hpp
couchbase-3.0.0.alpha.2-x86_64-darwin-19 ext/third_party/json/include/tao/json/contrib/unordered_map_traits.hpp
couchbase-3.0.0.alpha.2-universal-darwin-19 ext/third_party/json/include/tao/json/contrib/unordered_map_traits.hpp
couchbase-3.0.0.alpha.2 ext/third_party/json/include/tao/json/contrib/unordered_map_traits.hpp