Sha256: 60339b7a80b8f5216b4ea82c21df353a68e25c670c4db51cb393c2fab6187a65

Contents?: true

Size: 1.38 KB

Versions: 7

Compression:

Stored size: 1.38 KB

Contents

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

#ifndef TAO_JSON_CONTRIB_VECTOR_TRAITS_HPP
#define TAO_JSON_CONTRIB_VECTOR_TRAITS_HPP

#include <vector>

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

#include "internal/array_traits.hpp"

namespace tao::json
{
   template< typename T, typename... Ts >
   struct vector_traits
      : internal::array_traits< std::vector< T, Ts... > >
   {
      template< template< typename... > class Traits, typename... With >
      static void to( const basic_value< Traits >& v, std::vector< T, Ts... >& r, With&... with )
      {
         const auto& a = v.get_array();
         for( const auto& i : a ) {
            r.emplace_back( i.template as_with< T >( with... ) );
         }
      }

#if defined( _MSC_VER )
#pragma warning( push )
#pragma warning( disable : 4127 )
#endif
      template< template< typename... > class Traits, typename Producer >
      static void consume( Producer& parser, std::vector< T, Ts... >& v )
      {
         auto s = parser.begin_array();
         if( s.size ) {
            v.reserve( *s.size );
         }
         while( parser.element_or_end_array( s ) ) {
            v.emplace_back( json::consume< T, Traits >( parser ) );
         }
      }
#if defined( _MSC_VER )
#pragma warning( pop )
#endif
   };

}  // namespace tao::json

#endif

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
couchbase-3.4.5 ext/couchbase/third_party/json/include/tao/json/contrib/vector_traits.hpp
couchbase-3.4.4 ext/couchbase/third_party/json/include/tao/json/contrib/vector_traits.hpp
couchbase-3.4.3 ext/couchbase/third_party/json/include/tao/json/contrib/vector_traits.hpp
couchbase-3.4.2 ext/couchbase/third_party/json/include/tao/json/contrib/vector_traits.hpp
couchbase-3.4.1 ext/couchbase/third_party/json/include/tao/json/contrib/vector_traits.hpp
couchbase-3.4.0 ext/couchbase/third_party/json/include/tao/json/contrib/vector_traits.hpp
couchbase-3.3.0 ext/couchbase/third_party/json/include/tao/json/contrib/vector_traits.hpp