lalr1.cc: simplify uses of size_t

* data/skeletons/stack.hh (stack::index_type): New type.
(stack::size, stack::operator[]): Be about an index_type rather than a
size_type and an int.
This commit is contained in:
Akim Demaille
2019-10-02 22:12:38 +02:00
parent 5df33278b4
commit 843ef49bc3

View File

@@ -35,6 +35,7 @@ m4_define([b4_stack_define],
typedef typename S::reverse_iterator iterator; typedef typename S::reverse_iterator iterator;
typedef typename S::const_reverse_iterator const_iterator; typedef typename S::const_reverse_iterator const_iterator;
typedef typename S::size_type size_type; typedef typename S::size_type size_type;
typedef typename std::ptrdiff_t index_type;
stack (size_type n = 200) stack (size_type n = 200)
: seq_ (n) : seq_ (n)
@@ -43,39 +44,19 @@ m4_define([b4_stack_define],
/// Random access. /// Random access.
/// ///
/// Index 0 returns the topmost element. /// Index 0 returns the topmost element.
T& const T&
operator[] (size_type i) operator[] (index_type i) const
{ {
return seq_[size () - 1 - i]; return seq_[size_type (size () - 1 - i)];
}
T&
operator[] (std::ptrdiff_t i)
{
return operator[] (size_type (i));
}
T&
operator[] (int i)
{
return operator[] (size_type (i));
} }
/// Random access. /// Random access.
/// ///
/// Index 0 returns the topmost element. /// Index 0 returns the topmost element.
const T& T&
operator[] (size_type i) const operator[] (index_type i)
{ {
return seq_[size () - 1 - i]; return seq_[size_type (size () - 1 - i)];
}
const T&
operator[] (std::ptrdiff_t i) const
{
return operator[] (size_type (i));
}
const T&
operator[] (int i) const
{
return operator[] (size_type (i));
} }
/// Steal the contents of \a t. /// Steal the contents of \a t.
@@ -104,10 +85,10 @@ m4_define([b4_stack_define],
} }
/// Number of elements on the stack. /// Number of elements on the stack.
size_type index_type
size () const YY_NOEXCEPT size () const YY_NOEXCEPT
{ {
return seq_.size (); return index_type (seq_.size ());
} }
std::ptrdiff_t std::ptrdiff_t
ssize () const YY_NOEXCEPT ssize () const YY_NOEXCEPT
@@ -133,20 +114,20 @@ m4_define([b4_stack_define],
class slice class slice
{ {
public: public:
slice (const stack& stack, std::ptrdiff_t range) slice (const stack& stack, index_type range)
: stack_ (stack) : stack_ (stack)
, range_ (range) , range_ (range)
{} {}
const T& const T&
operator[] (std::ptrdiff_t i) const operator[] (index_type i) const
{ {
return stack_[range_ - i]; return stack_[range_ - i];
} }
private: private:
const stack& stack_; const stack& stack_;
std::ptrdiff_t range_; index_type range_;
}; };
private: private: