Sha256: 9e1c0730c627836d6a33830af3f56488b855201464391484bd2b58669f49c2fb

Contents?: true

Size: 1.45 KB

Versions: 48

Compression:

Stored size: 1.45 KB

Contents

#ifndef TAO_JSON_CONTRIB_POINTER_TRAITS_HPP
#define TAO_JSON_CONTRIB_POINTER_TRAITS_HPP

#include "../pointer.hpp"
#include "../traits.hpp"

namespace tao::json
{
   struct token_traits
   {
      template< template< typename... > class Traits >
      static void assign( basic_value< Traits >& v, const token& t )
      {
         if( t.has_index() ) {
            v = t.index();
         }
         else {
            v = t.key();
         }
      }

      template< template< typename... > class Traits, typename Consumer >
      static void produce( Consumer& c, const token& t )
      {
         if( t.has_index() ) {
            json::events::produce< Traits >( c, t.index() );
         }
         else {
            json::events::produce< Traits >( c, t.key() );
         }
      }
   };

   struct pointer_traits
   {
      template< template< typename... > class Traits >
      static void assign( basic_value< Traits >& v, const pointer& p )
      {
         v.prepare_array().reserve( p.size() );
         for( const auto& i : p ) {
            v.emplace_back( i );
         }
      }

      template< template< typename... > class Traits, typename Consumer >
      static void produce( Consumer& c, const pointer& p )
      {
         c.begin_array( p.size() );
         for( const auto& i : p ) {
            json::events::produce< Traits >( c, i );
            c.element();
         }
         c.end_array( p.size() );
      }
   };

}  // namespace tao::json

#endif

Version data entries

48 entries across 48 versions & 1 rubygems

Version Path
couchbase-3.5.6 ext/cache/json/4c7c23ac69aa1d72b3a9295ac9aceac10d32d9a1/json/include/tao/json/contrib/pointer_traits.hpp
couchbase-3.5.5 ext/cache/json/4c7c23ac69aa1d72b3a9295ac9aceac10d32d9a1/json/include/tao/json/contrib/pointer_traits.hpp
couchbase-3.5.4 ext/cache/json/4c7c23ac69aa1d72b3a9295ac9aceac10d32d9a1/json/include/tao/json/contrib/pointer_traits.hpp
couchbase-3.5.3 ext/cache/json/4c7c23ac69aa1d72b3a9295ac9aceac10d32d9a1/json/include/tao/json/contrib/pointer_traits.hpp
couchbase-3.5.2 ext/cache/json/4c7c23ac69aa1d72b3a9295ac9aceac10d32d9a1/json/include/tao/json/contrib/pointer_traits.hpp
couchbase-3.5.1 ext/cache/json/4c7c23ac69aa1d72b3a9295ac9aceac10d32d9a1/json/include/tao/json/contrib/pointer_traits.hpp
couchbase-3.5.0 ext/cache/json/4c7c23ac69aa1d72b3a9295ac9aceac10d32d9a1/json/include/tao/json/contrib/pointer_traits.hpp
couchbase-3.4.5 ext/couchbase/third_party/json/include/tao/json/contrib/pointer_traits.hpp
couchbase-3.4.4 ext/couchbase/third_party/json/include/tao/json/contrib/pointer_traits.hpp
couchbase-3.4.3 ext/couchbase/third_party/json/include/tao/json/contrib/pointer_traits.hpp
couchbase-3.4.2 ext/couchbase/third_party/json/include/tao/json/contrib/pointer_traits.hpp
couchbase-3.4.1 ext/couchbase/third_party/json/include/tao/json/contrib/pointer_traits.hpp
couchbase-3.4.0 ext/couchbase/third_party/json/include/tao/json/contrib/pointer_traits.hpp
couchbase-3.3.0 ext/couchbase/third_party/json/include/tao/json/contrib/pointer_traits.hpp
couchbase-3.2.0-universal-darwin-20 ext/third_party/json/include/tao/json/contrib/pointer_traits.hpp
couchbase-3.2.0 ext/third_party/json/include/tao/json/contrib/pointer_traits.hpp
couchbase-3.1.1 ext/third_party/json/include/tao/json/contrib/pointer_traits.hpp
couchbase-3.1.1-universal-darwin-20 ext/third_party/json/include/tao/json/contrib/pointer_traits.hpp
couchbase-3.1.0 ext/third_party/json/include/tao/json/contrib/pointer_traits.hpp
couchbase-3.0.3 ext/third_party/json/include/tao/json/contrib/pointer_traits.hpp