Changeset f041811 in mainline


Ignore:
Timestamp:
2018-07-05T21:41:17Z (6 years ago)
Author:
Dzejrou <dzejrou@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
56521a2
Parents:
604038c
git-author:
Jaroslav Jindrak <dzejrou@…> (2017-10-24 19:30:27)
git-committer:
Dzejrou <dzejrou@…> (2018-07-05 21:41:17)
Message:

cpp: fixed minor bugs

Location:
uspace/lib/cpp/include/impl
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/cpp/include/impl/algorithm.hpp

    r604038c rf041811  
    3030#define LIBCPP_ALGORITHM
    3131
     32#include <iterator>
    3233#include <utility>
    3334
  • uspace/lib/cpp/include/impl/iterator.hpp

    r604038c rf041811  
    3030#define LIBCPP_ITERATOR
    3131
     32#include <cstdlib>
     33
    3234namespace std
    3335{
     
    118120        public:
    119121            using iterator_type   = Iterator;
    120             using difference_type = typename Iterator::difference_type;
    121             using reference       = typename Iterator::reference;
    122             using pointer         = typename Iterator::pointer;
     122            using difference_type = typename iterator_traits<Iterator>::difference_type;
     123            using reference       = typename iterator_traits<Iterator>::reference;
     124            using pointer         = typename iterator_traits<Iterator>::pointer;
    123125
    124126            reverse_iterator()
     
    229231                    const reverse_iterator<Iterator2>& rhs)
    230232    {
    231         return lhs.current_ == rhs.current_;
     233        return lhs.base() == rhs.base();
    232234    }
    233235
    234236    template<class Iterator1, class Iterator2>
    235237    bool operator<(const reverse_iterator<Iterator1>& lhs,
    236                     const reverse_iterator<Iterator2>& rhs)
     238                   const reverse_iterator<Iterator2>& rhs)
    237239    {
    238240        // Remember: they are reversed!
    239         return lhs.current_ > rhs.current_;
     241        return lhs.base() > rhs.base();
    240242    }
    241243
     
    244246                    const reverse_iterator<Iterator2>& rhs)
    245247    {
    246         return lhs.current_ != rhs.current_;
     248        return lhs.base() != rhs.base();
    247249    }
    248250
     
    251253                    const reverse_iterator<Iterator2>& rhs)
    252254    {
    253         return lhs.current_ < rhs.current_;
     255        return lhs.base() < rhs.base();
    254256    }
    255257
     
    258260                    const reverse_iterator<Iterator2>& rhs)
    259261    {
    260         return lhs.current_ <= rhs.current_;
     262        return lhs.base() <= rhs.base();
    261263    }
    262264
     
    265267                    const reverse_iterator<Iterator2>& rhs)
    266268    {
    267         return lhs.current_ >= rhs.current_;
     269        return lhs.base() >= rhs.base();
    268270    }
    269271
     
    273275        -> decltype(rhs.base() - lhs.base())
    274276    {
    275         return rhs.current_ - lhs.current_;
     277        return rhs.base() - lhs.base();
    276278    }
    277279
     
    282284    )
    283285    {
    284         return reverse_iterator<Iterator>{it.current_ - n};
     286        return reverse_iterator<Iterator>{it.base() - n};
    285287    }
    286288
  • uspace/lib/cpp/include/impl/utility.hpp

    r604038c rf041811  
    3838     */
    3939
    40     template<typename T>
    41     bool operator!=(const T& lhs, const T& rhs)
    42     {
    43         return !(lhs == rhs);
    44     }
    45 
    46     template<typename T>
    47     bool operator>(const T& lhs, const T& rhs)
    48     {
    49         return (rhs < lhs);
    50     }
    51 
    52     template<typename T>
    53     bool operator<=(const T& lhs, const T& rhs)
    54     {
    55         return !(rhs < lhs);
    56     }
    57 
    58     template<typename T>
    59     bool operator>=(const T& lhs, const T& rhs)
    60     {
    61         return !(lhs < rhs);
     40    namespace rel_ops
     41    {
     42        template<typename T>
     43        bool operator!=(const T& lhs, const T& rhs)
     44        {
     45            return !(lhs == rhs);
     46        }
     47
     48        template<typename T>
     49        bool operator>(const T& lhs, const T& rhs)
     50        {
     51            return (rhs < lhs);
     52        }
     53
     54        template<typename T>
     55        bool operator<=(const T& lhs, const T& rhs)
     56        {
     57            return !(rhs < lhs);
     58        }
     59
     60        template<typename T>
     61        bool operator>=(const T& lhs, const T& rhs)
     62        {
     63            return !(lhs < rhs);
     64        }
    6265    }
    6366
Note: See TracChangeset for help on using the changeset viewer.