From 073d1cb4ec22be341f7ba1f918d206add8f0e2bf Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 17 May 2023 17:35:03 +0200 Subject: Dep/protobuf: Fixed gcc warnings --- .../fix_std_iterator_deprecation_warnings.diff | 111 +++++++++++++++++++++ dep/protobuf/src/google/protobuf/repeated_field.h | 51 ++++++---- 2 files changed, 141 insertions(+), 21 deletions(-) create mode 100644 dep/protobuf/fix_std_iterator_deprecation_warnings.diff (limited to 'dep') diff --git a/dep/protobuf/fix_std_iterator_deprecation_warnings.diff b/dep/protobuf/fix_std_iterator_deprecation_warnings.diff new file mode 100644 index 00000000000..3894b2c7f2b --- /dev/null +++ b/dep/protobuf/fix_std_iterator_deprecation_warnings.diff @@ -0,0 +1,111 @@ +diff --git a/dep/protobuf/src/google/protobuf/repeated_field.h b/dep/protobuf/src/google/protobuf/repeated_field.h +index c4dced368d..b8e378ac3e 100644 +--- a/dep/protobuf/src/google/protobuf/repeated_field.h ++++ b/dep/protobuf/src/google/protobuf/repeated_field.h +@@ -1250,13 +1250,11 @@ namespace internal { + // This code based on net/proto/proto-array-internal.h by Jeffrey Yasskin + // (jyasskin@google.com). + template +-class RepeatedPtrIterator +- : public std::iterator< +- std::random_access_iterator_tag, Element> { ++class RepeatedPtrIterator { + public: + typedef RepeatedPtrIterator iterator; +- typedef std::iterator< +- std::random_access_iterator_tag, Element> superclass; ++ ++ typedef std::random_access_iterator_tag iterator_category; + + // Shadow the value_type in std::iterator<> because const_iterator::value_type + // needs to be T, not const T. +@@ -1264,9 +1262,9 @@ class RepeatedPtrIterator + + // Let the compiler know that these are type names, so we don't have to + // write "typename" in front of them everywhere. +- typedef typename superclass::reference reference; +- typedef typename superclass::pointer pointer; +- typedef typename superclass::difference_type difference_type; ++ typedef Element& reference; ++ typedef Element* pointer; ++ typedef std::ptrdiff_t difference_type; + + RepeatedPtrIterator() : it_(NULL) {} + explicit RepeatedPtrIterator(void* const* it) : it_(it) {} +@@ -1346,12 +1344,11 @@ class RepeatedPtrIterator + // referenced by the iterator. It should either be "void *" for a mutable + // iterator, or "const void *" for a constant iterator. + template +-class RepeatedPtrOverPtrsIterator +- : public std::iterator { ++class RepeatedPtrOverPtrsIterator { + public: + typedef RepeatedPtrOverPtrsIterator iterator; +- typedef std::iterator< +- std::random_access_iterator_tag, Element*> superclass; ++ ++ typedef std::random_access_iterator_tag iterator_category; + + // Shadow the value_type in std::iterator<> because const_iterator::value_type + // needs to be T, not const T. +@@ -1359,9 +1356,9 @@ class RepeatedPtrOverPtrsIterator + + // Let the compiler know that these are type names, so we don't have to + // write "typename" in front of them everywhere. +- typedef typename superclass::reference reference; +- typedef typename superclass::pointer pointer; +- typedef typename superclass::difference_type difference_type; ++ typedef Element*& reference; ++ typedef Element** pointer; ++ typedef std::ptrdiff_t difference_type; + + RepeatedPtrOverPtrsIterator() : it_(NULL) {} + explicit RepeatedPtrOverPtrsIterator(VoidPtr* it) : it_(it) {} +@@ -1479,9 +1476,13 @@ RepeatedPtrField::pointer_end() const { + + namespace internal { + // A back inserter for RepeatedField objects. +-template class RepeatedFieldBackInsertIterator +- : public std::iterator { ++template class RepeatedFieldBackInsertIterator { + public: ++ typedef std::output_iterator_tag iterator_category; ++ typedef T value_type; ++ typedef std::ptrdiff_t difference_type; ++ typedef T* pointer; ++ typedef T& reference; + explicit RepeatedFieldBackInsertIterator( + RepeatedField* const mutable_field) + : field_(mutable_field) { +@@ -1505,9 +1506,13 @@ template class RepeatedFieldBackInsertIterator + }; + + // A back inserter for RepeatedPtrField objects. +-template class RepeatedPtrFieldBackInsertIterator +- : public std::iterator { ++template class RepeatedPtrFieldBackInsertIterator { + public: ++ typedef std::output_iterator_tag iterator_category; ++ typedef T value_type; ++ typedef std::ptrdiff_t difference_type; ++ typedef T* pointer; ++ typedef T& reference; + RepeatedPtrFieldBackInsertIterator( + RepeatedPtrField* const mutable_field) + : field_(mutable_field) { +@@ -1537,9 +1542,13 @@ template class RepeatedPtrFieldBackInsertIterator + + // A back inserter for RepeatedPtrFields that inserts by transfering ownership + // of a pointer. +-template class AllocatedRepeatedPtrFieldBackInsertIterator +- : public std::iterator { ++template class AllocatedRepeatedPtrFieldBackInsertIterator { + public: ++ typedef std::output_iterator_tag iterator_category; ++ typedef T value_type; ++ typedef std::ptrdiff_t difference_type; ++ typedef T* pointer; ++ typedef T& reference; + explicit AllocatedRepeatedPtrFieldBackInsertIterator( + RepeatedPtrField* const mutable_field) + : field_(mutable_field) { diff --git a/dep/protobuf/src/google/protobuf/repeated_field.h b/dep/protobuf/src/google/protobuf/repeated_field.h index c4dced368de..b8e378ac3e0 100644 --- a/dep/protobuf/src/google/protobuf/repeated_field.h +++ b/dep/protobuf/src/google/protobuf/repeated_field.h @@ -1250,13 +1250,11 @@ namespace internal { // This code based on net/proto/proto-array-internal.h by Jeffrey Yasskin // (jyasskin@google.com). template -class RepeatedPtrIterator - : public std::iterator< - std::random_access_iterator_tag, Element> { +class RepeatedPtrIterator { public: typedef RepeatedPtrIterator iterator; - typedef std::iterator< - std::random_access_iterator_tag, Element> superclass; + + typedef std::random_access_iterator_tag iterator_category; // Shadow the value_type in std::iterator<> because const_iterator::value_type // needs to be T, not const T. @@ -1264,9 +1262,9 @@ class RepeatedPtrIterator // Let the compiler know that these are type names, so we don't have to // write "typename" in front of them everywhere. - typedef typename superclass::reference reference; - typedef typename superclass::pointer pointer; - typedef typename superclass::difference_type difference_type; + typedef Element& reference; + typedef Element* pointer; + typedef std::ptrdiff_t difference_type; RepeatedPtrIterator() : it_(NULL) {} explicit RepeatedPtrIterator(void* const* it) : it_(it) {} @@ -1346,12 +1344,11 @@ class RepeatedPtrIterator // referenced by the iterator. It should either be "void *" for a mutable // iterator, or "const void *" for a constant iterator. template -class RepeatedPtrOverPtrsIterator - : public std::iterator { +class RepeatedPtrOverPtrsIterator { public: typedef RepeatedPtrOverPtrsIterator iterator; - typedef std::iterator< - std::random_access_iterator_tag, Element*> superclass; + + typedef std::random_access_iterator_tag iterator_category; // Shadow the value_type in std::iterator<> because const_iterator::value_type // needs to be T, not const T. @@ -1359,9 +1356,9 @@ class RepeatedPtrOverPtrsIterator // Let the compiler know that these are type names, so we don't have to // write "typename" in front of them everywhere. - typedef typename superclass::reference reference; - typedef typename superclass::pointer pointer; - typedef typename superclass::difference_type difference_type; + typedef Element*& reference; + typedef Element** pointer; + typedef std::ptrdiff_t difference_type; RepeatedPtrOverPtrsIterator() : it_(NULL) {} explicit RepeatedPtrOverPtrsIterator(VoidPtr* it) : it_(it) {} @@ -1479,9 +1476,13 @@ RepeatedPtrField::pointer_end() const { namespace internal { // A back inserter for RepeatedField objects. -template class RepeatedFieldBackInsertIterator - : public std::iterator { +template class RepeatedFieldBackInsertIterator { public: + typedef std::output_iterator_tag iterator_category; + typedef T value_type; + typedef std::ptrdiff_t difference_type; + typedef T* pointer; + typedef T& reference; explicit RepeatedFieldBackInsertIterator( RepeatedField* const mutable_field) : field_(mutable_field) { @@ -1505,9 +1506,13 @@ template class RepeatedFieldBackInsertIterator }; // A back inserter for RepeatedPtrField objects. -template class RepeatedPtrFieldBackInsertIterator - : public std::iterator { +template class RepeatedPtrFieldBackInsertIterator { public: + typedef std::output_iterator_tag iterator_category; + typedef T value_type; + typedef std::ptrdiff_t difference_type; + typedef T* pointer; + typedef T& reference; RepeatedPtrFieldBackInsertIterator( RepeatedPtrField* const mutable_field) : field_(mutable_field) { @@ -1537,9 +1542,13 @@ template class RepeatedPtrFieldBackInsertIterator // A back inserter for RepeatedPtrFields that inserts by transfering ownership // of a pointer. -template class AllocatedRepeatedPtrFieldBackInsertIterator - : public std::iterator { +template class AllocatedRepeatedPtrFieldBackInsertIterator { public: + typedef std::output_iterator_tag iterator_category; + typedef T value_type; + typedef std::ptrdiff_t difference_type; + typedef T* pointer; + typedef T& reference; explicit AllocatedRepeatedPtrFieldBackInsertIterator( RepeatedPtrField* const mutable_field) : field_(mutable_field) { -- cgit v1.2.3