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