0.00% Lines (0/0) 0.00% Functions (0/0)
TLA Baseline Branch
Line Hits Code Line Hits Code
1 - //  
2 - // Copyright (c) 2023 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/capy  
8 - //  
9 -  
10 - #include <boost/capy/buffers/buffer_pair.hpp>  
11 - #include <boost/capy/buffers/slice.hpp>  
12 -  
13 - namespace boost {  
14 - namespace capy {  
15 -  
16 - void  
DCB 17 - 1040 tag_invoke(  
18 - slice_tag const&,  
19 - const_buffer_pair& bs,  
20 - slice_how how,  
21 - std::size_t n) noexcept  
22 - {  
DCB 23 - 1040 switch(how)  
24 - {  
DCB 25 - 512 case slice_how::remove_prefix:  
26 - {  
DCB 27 - 512 auto p = &bs[0];  
DCB 28 - 512 if(n < p->size())  
29 - {  
DCB 30 - 225 remove_prefix(*p, n);  
DCB 31 - 225 return;  
32 - }  
DCB 33 - 287 n -= p->size();  
DCB 34 - 287 *p = bs[1];  
DCB 35 - 287 bs[1] = {};  
DCB 36 - 287 remove_prefix(*p, n);  
DCB 37 - 287 return;  
38 - }  
39 -  
DCB 40 - 528 case slice_how::keep_prefix:  
41 - {  
DCB 42 - 528 auto p = &bs[0];  
DCB 43 - 528 if(n <= p->size())  
44 - {  
DCB 45 - 287 keep_prefix(*p, n);  
DCB 46 - 287 bs[1] = {};  
DCB 47 - 287 return;  
48 - }  
DCB 49 - 241 n -= p->size();  
DCB 50 - 241 ++p;  
DCB 51 - 241 keep_prefix(*p, n);  
DCB 52 - 241 return;  
53 - }  
54 - }  
55 - }  
56 -  
57 - void  
DCB 58 - 1040 tag_invoke(  
59 - slice_tag const&,  
60 - mutable_buffer_pair& bs,  
61 - slice_how how,  
62 - std::size_t n) noexcept  
63 - {  
DCB 64 - 1040 switch(how)  
65 - {  
DCB 66 - 512 case slice_how::remove_prefix:  
67 - {  
DCB 68 - 512 auto p = &bs[0];  
DCB 69 - 512 if(n < p->size())  
70 - {  
DCB 71 - 225 remove_prefix(*p, n);  
DCB 72 - 225 return;  
73 - }  
DCB 74 - 287 n -= p->size();  
DCB 75 - 287 *p = bs[1];  
DCB 76 - 287 bs[1] = {};  
DCB 77 - 287 remove_prefix(*p, n);  
DCB 78 - 287 return;  
79 - }  
80 -  
DCB 81 - 528 case slice_how::keep_prefix:  
82 - {  
DCB 83 - 528 auto p = &bs[0];  
DCB 84 - 528 if(n <= p->size())  
85 - {  
DCB 86 - 287 keep_prefix(*p, n);  
DCB 87 - 287 bs[1] = {};  
DCB 88 - 287 return;  
89 - }  
DCB 90 - 241 n -= p->size();  
DCB 91 - 241 ++p;  
DCB 92 - 241 keep_prefix(*p, n);  
DCB 93 - 241 return;  
94 - }  
95 - }  
96 - }  
97 -  
98 - } // capy  
99 - } // boost