GCC Code Coverage Report


Directory: libs/http_proto/include/boost/http_proto/
File: boost/http_proto/impl/parser.hpp
Date: 2023-03-01 04:29:23
Exec Total Coverage
Lines: 7 8 87.5%
Functions: 1 1 100.0%
Branches: 2 4 50.0%

Line Branch Exec Source
1 //
2 // Copyright (c) 2019 Vinnie Falco (vinnie.falco@gmail.com)
3 //
4 // Distributed under the Boost Software License, Version 1.0. (See accompanying
5 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 //
7 // Official repository: https://github.com/CPPAlliance/http_proto
8 //
9
10 #ifndef BOOST_HTTP_PROTO_IMPL_PARSER_HPP
11 #define BOOST_HTTP_PROTO_IMPL_PARSER_HPP
12
13 #include <cstdlib>
14
15 namespace boost {
16 namespace http_proto {
17
18 //------------------------------------------------
19
20 template<class DynamicBuffer, class>
21 typename std::decay<
22 DynamicBuffer>::type&
23 6775 parser::
24 set_body(
25 DynamicBuffer&& b)
26 {
27 // body type already chosen
28
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 6775 times.
6775 if(how_ != how::in_place)
29 detail::throw_logic_error();
30
31
1/2
✓ Branch 3 taken 6775 times.
✗ Branch 4 not taken.
6775 auto& dyn = ws_.push(
32 buffers::any_dynamic_buffer_impl<typename
33 std::decay<DynamicBuffer>::type,
34 buffers_N>(std::forward<
35 DynamicBuffer>(b)));
36 6775 dyn_ = &dyn;
37 6775 how_ = how::dynamic;
38 6775 on_set_body();
39 6775 return dyn.buffer();
40 }
41
42 //------------------------------------------------
43
44 template<class Sink>
45 typename std::enable_if<
46 is_sink<Sink>::value,
47 typename std::decay<Sink>::type
48 >::type
49 parser::
50 set_body(
51 Sink&& sink)
52 {
53 // body type already chosen
54 if(how_ != how::in_place)
55 detail::throw_logic_error();
56
57 auto& s = ws_.push(
58 std::forward<
59 Sink>(sink));
60 sink_ = &s;
61 how_ = how::sink;
62 on_set_body();
63 return s;
64 }
65
66 } // http_proto
67 } // boost
68
69 #endif
70