LCOV - code coverage report
Current view: top level - src - BList.cpp (source / functions) Hit Total Coverage
Test: cpp-bencoding code coverage Lines: 45 45 100.0 %
Date: 2018-04-21 15:28:44 Functions: 18 18 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /**
       2             : * @file      BList.cpp
       3             : * @copyright (c) 2014 by Petr Zemek (s3rvac@gmail.com) and contributors
       4             : * @license   BSD, see the @c LICENSE file for more details
       5             : * @brief     Implementation of the BList class.
       6             : */
       7             : 
       8             : #include "BList.h"
       9             : 
      10             : #include <cassert>
      11             : 
      12             : #include "BItemVisitor.h"
      13             : 
      14             : namespace bencoding {
      15             : 
      16             : /**
      17             : * @brief Constructs an empty list.
      18             : */
      19             : BList::BList() = default;
      20             : 
      21             : /**
      22             : * @brief Constructs a list containing the given @a items.
      23             : */
      24           2 : BList::BList(std::initializer_list<value_type> items):
      25           2 :     itemList(items) {}
      26             : 
      27             : /**
      28             : * @brief Creates and returns a new list.
      29             : */
      30          24 : std::unique_ptr<BList> BList::create() {
      31          24 :     return std::unique_ptr<BList>(new BList());
      32             : }
      33             : 
      34             : /**
      35             : * @brief Creates a returns a new list containing the given @a items.
      36             : */
      37           2 : std::unique_ptr<BList> BList::create(std::initializer_list<value_type> items) {
      38           2 :     return std::unique_ptr<BList>(new BList(items));
      39             : }
      40             : 
      41             : /**
      42             : * @brief Returns the number of items in the list.
      43             : */
      44           8 : BList::size_type BList::size() const {
      45           8 :     return itemList.size();
      46             : }
      47             : 
      48             : /**
      49             : * @brief Checks if the list is empty.
      50             : *
      51             : * @return @c true if the list is empty, @c false otherwise.
      52             : */
      53          17 : bool BList::empty() const {
      54          17 :     return itemList.empty();
      55             : }
      56             : 
      57             : /**
      58             : * @brief Appends the given item to the end of the list.
      59             : *
      60             : * @preconditions
      61             : *  - @a bItem is non-null
      62             : */
      63          28 : void BList::push_back(const value_type &bItem) {
      64          28 :     assert(bItem && "cannot add a null item to the list");
      65             : 
      66          28 :     itemList.push_back(bItem);
      67          28 : }
      68             : 
      69             : /**
      70             : * @brief Removes the last element of the list.
      71             : *
      72             : * References and iterators to the erased element are invalidated.
      73             : *
      74             : * @preconditions
      75             : *  - list is non-empty
      76             : */
      77           1 : void BList::pop_back() {
      78           1 :     assert(!empty() && "cannot call pop_back() on an empty list");
      79             : 
      80           1 :     itemList.pop_back();
      81           1 : }
      82             : 
      83             : /**
      84             : * @brief Returns a reference to the first item in the list.
      85             : *
      86             : * @preconditions
      87             : *  - list is non-empty
      88             : */
      89           5 : BList::reference BList::front() {
      90           5 :     assert(!empty() && "cannot call front() on an empty list");
      91             : 
      92           5 :     return itemList.front();
      93             : }
      94             : 
      95             : /**
      96             : * @brief Returns a constant reference to the first item in the list.
      97             : *
      98             : * @preconditions
      99             : *  - list is non-empty
     100             : */
     101           1 : BList::const_reference BList::front() const {
     102           1 :     assert(!empty() && "cannot call front() on an empty list");
     103             : 
     104           1 :     return itemList.front();
     105             : }
     106             : 
     107             : /**
     108             : * @brief Returns a reference to the last item in the list.
     109             : *
     110             : * @preconditions
     111             : *  - list is non-empty
     112             : */
     113           3 : BList::reference BList::back() {
     114           3 :     assert(!empty() && "cannot call back() on an empty list");
     115             : 
     116           3 :     return itemList.back();
     117             : }
     118             : 
     119             : /**
     120             : * @brief Returns a constant reference to the last item in the list.
     121             : *
     122             : * @preconditions
     123             : *  - list is non-empty
     124             : */
     125           1 : BList::const_reference BList::back() const {
     126           1 :     assert(!empty() && "cannot call back() on an empty list");
     127             : 
     128           1 :     return itemList.back();
     129             : }
     130             : 
     131             : /**
     132             : * @brief Returns an iterator to the beginning of the list.
     133             : */
     134           6 : BList::iterator BList::begin() {
     135           6 :     return itemList.begin();
     136             : }
     137             : 
     138             : /**
     139             : * @brief Returns an iterator to the end of the list.
     140             : */
     141           6 : BList::iterator BList::end() {
     142           6 :     return itemList.end();
     143             : }
     144             : 
     145             : /**
     146             : * @brief Returns a constant iterator to the beginning of the list.
     147             : */
     148           2 : BList::const_iterator BList::begin() const {
     149           2 :     return itemList.begin();
     150             : }
     151             : 
     152             : /**
     153             : * @brief Returns a constant iterator to the end of the list.
     154             : */
     155           2 : BList::const_iterator BList::end() const {
     156           2 :     return itemList.end();
     157             : }
     158             : 
     159             : /**
     160             : * @brief Returns a constant iterator to the beginning of the list.
     161             : */
     162           2 : BList::const_iterator BList::cbegin() const {
     163           2 :     return itemList.cbegin();
     164             : }
     165             : 
     166             : /**
     167             : * @brief Returns a constant iterator to the end of the list.
     168             : */
     169           2 : BList::const_iterator BList::cend() const {
     170           2 :     return itemList.cend();
     171             : }
     172             : 
     173           4 : void BList::accept(BItemVisitor *visitor) {
     174           4 :     visitor->visit(this);
     175           4 : }
     176             : 
     177             : } // namespace bencoding

Generated by: LCOV version 1.13