dlib C++ Library - sink.h

// Copyright (C) 2023 Davis E. King (davis@dlib.net)
// License: Boost Software License See LICENSE.txt for the full license.
#ifndef DLIB_FFMPEG_SINK
#define DLIB_FFMPEG_SINK
#include <cstdint>
#include <vector>
#include <ostream>
#include "../type_traits.h"
namespace dlib
{
 namespace ffmpeg
 {
// ---------------------------------------------------------------------------------------------------
 template <
 class Byte, 
 class Allocator,
 std::enable_if_t<is_byte<Byte>::value, bool> = true
 >
 auto sink(std::vector<Byte, Allocator>& buf)
 /*!
 requires
 - Byte must be a byte type, e.g. char, int8_t or uint8_t
 ensures
 - returns a function object with signature bool(std::size_t N, const char* data). When
 called that function appends the first N bytes pointed to by data onto the end of buf.
 - The returned function is valid only as long as buf exists.
 - The function always returns true. 
 !*/
 {
 return [&](std::size_t ndata, const char* data) {
 buf.insert(buf.end(), data, data + ndata);
 return true;
 };
 }
// ---------------------------------------------------------------------------------------------------
 inline auto sink(std::ostream& out)
 /*!
 ensures
 - returns a function object with signature bool(std::size_t N, const char* data). When
 called that function writes the first N bytes pointed to by data to out.
 - The returned view is valid only as long as out exists.
 - Returns out.good(). I.e. returns true if the write to the stream succeeded and false otherwise. 
 !*/
 {
 return [&](std::size_t ndata, const char* data) {
 out.write(data, ndata);
 return out.good();
 };
 }
// ---------------------------------------------------------------------------------------------------
 }
}
#endif //DLIB_FFMPEG_SINK

AltStyle によって変換されたページ (->オリジナル) /