From 843ef49bc3f557554c53f5d5322c0f25fed2221a Mon Sep 17 00:00:00 2001 From: Akim Demaille Date: Wed, 2 Oct 2019 22:12:38 +0200 Subject: [PATCH] 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. --- data/skeletons/stack.hh | 43 ++++++++++++----------------------------- 1 file changed, 12 insertions(+), 31 deletions(-) diff --git a/data/skeletons/stack.hh b/data/skeletons/stack.hh index 1fe2b06a..ac0a34d1 100644 --- a/data/skeletons/stack.hh +++ b/data/skeletons/stack.hh @@ -35,6 +35,7 @@ m4_define([b4_stack_define], typedef typename S::reverse_iterator iterator; typedef typename S::const_reverse_iterator const_iterator; typedef typename S::size_type size_type; + typedef typename std::ptrdiff_t index_type; stack (size_type n = 200) : seq_ (n) @@ -43,39 +44,19 @@ m4_define([b4_stack_define], /// Random access. /// /// Index 0 returns the topmost element. - T& - operator[] (size_type i) + const T& + operator[] (index_type i) const { - return seq_[size () - 1 - i]; - } - T& - operator[] (std::ptrdiff_t i) - { - return operator[] (size_type (i)); - } - T& - operator[] (int i) - { - return operator[] (size_type (i)); + return seq_[size_type (size () - 1 - i)]; } /// Random access. /// /// Index 0 returns the topmost element. - const T& - operator[] (size_type i) const + T& + operator[] (index_type i) { - return seq_[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)); + return seq_[size_type (size () - 1 - i)]; } /// Steal the contents of \a t. @@ -104,10 +85,10 @@ m4_define([b4_stack_define], } /// Number of elements on the stack. - size_type + index_type size () const YY_NOEXCEPT { - return seq_.size (); + return index_type (seq_.size ()); } std::ptrdiff_t ssize () const YY_NOEXCEPT @@ -133,20 +114,20 @@ m4_define([b4_stack_define], class slice { public: - slice (const stack& stack, std::ptrdiff_t range) + slice (const stack& stack, index_type range) : stack_ (stack) , range_ (range) {} const T& - operator[] (std::ptrdiff_t i) const + operator[] (index_type i) const { return stack_[range_ - i]; } private: const stack& stack_; - std::ptrdiff_t range_; + index_type range_; }; private: