Sha256: ebe12b219b75180dab17e7a982330b38607cd783471c7cac1352a436478075ac
Contents?: true
Size: 948 Bytes
Versions: 34
Compression:
Stored size: 948 Bytes
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_EVENTS_LIMIT_VALUE_COUNT_HPP #define TAO_JSON_EVENTS_LIMIT_VALUE_COUNT_HPP #include <cstddef> #include <cstdint> #include <stdexcept> namespace tao::json::events { template< typename Consumer, std::size_t Limit > class limit_value_count : public Consumer { private: std::size_t m_count = 1; // Top-level value is implied. void count_and_limit() { if( ++m_count > Limit ) { throw std::runtime_error( "value count limit exceeded" ); } } public: using Consumer::Consumer; void element() { count_and_limit(); Consumer::element(); } void member() { count_and_limit(); Consumer::member(); } }; } // namespace tao::json::events #endif
Version data entries
34 entries across 34 versions & 1 rubygems