123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- #ifndef BOOST_BEAST_ZLIB_DETAIL_RANGES_HPP
- #define BOOST_BEAST_ZLIB_DETAIL_RANGES_HPP
- #include <cstdint>
- #include <type_traits>
- namespace boost {
- namespace beast {
- namespace zlib {
- namespace detail {
- struct ranges
- {
- template<bool isConst>
- struct range
- {
- using iter_t =
- typename std::conditional<isConst,
- std::uint8_t const*,
- std::uint8_t*>::type;
- iter_t first;
- iter_t last;
- iter_t next;
-
- std::size_t
- size() const
- {
- return last - first;
- }
-
- std::size_t
- used() const
- {
- return next - first;
- }
-
- std::size_t
- avail() const
- {
- return last - next;
- }
- };
- range<true> in;
- range<false> out;
- };
- template<class U, class V>
- U clamp(U u, V v)
- {
- if(u > v)
- u = static_cast<U>(v);
- return u;
- }
- }
- }
- }
- }
- #endif
|