encoding: generalize and simplify shouldSelectContiguousReadNumber()
Change-Id: Icb91ce3791f5093fbe5207e3be7e13d9d805243b
Refs: #4172
diff --git a/src/encoding/tlv.hpp b/src/encoding/tlv.hpp
index 4e9c009..fbe871f 100644
--- a/src/encoding/tlv.hpp
+++ b/src/encoding/tlv.hpp
@@ -26,8 +26,9 @@
#include "endian.hpp"
#include <cstring>
-#include <iostream>
#include <iterator>
+#include <ostream>
+#include <type_traits>
namespace ndn {
@@ -70,22 +71,22 @@
MinSuffixComponents = 13,
MaxSuffixComponents = 14,
PublisherPublicKeyLocator = 15,
- Exclude = 16,
- ChildSelector = 17,
- MustBeFresh = 18,
- Any = 19,
- MetaInfo = 20,
- Content = 21,
- SignatureInfo = 22,
+ Exclude = 16,
+ ChildSelector = 17,
+ MustBeFresh = 18,
+ Any = 19,
+ MetaInfo = 20,
+ Content = 21,
+ SignatureInfo = 22,
SignatureValue = 23,
ContentType = 24,
FreshnessPeriod = 25,
- FinalBlockId = 26,
- SignatureType = 27,
- KeyLocator = 28,
- KeyDigest = 29,
- LinkPreference = 30,
- LinkDelegation = 31,
+ FinalBlockId = 26,
+ SignatureType = 27,
+ KeyLocator = 28,
+ KeyDigest = 29,
+ LinkPreference = 30,
+ LinkDelegation = 31,
SelectedDelegation = 32,
AppPrivateBlock1 = 128,
@@ -248,7 +249,7 @@
/////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////
-// Inline implementations
+// Inline definitions
/////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////
@@ -336,11 +337,8 @@
return (std::is_convertible<DecayedIterator, const ValueType*>::value ||
std::is_convertible<DecayedIterator, typename std::basic_string<ValueType>::const_iterator>::value ||
std::is_convertible<DecayedIterator, typename std::vector<ValueType>::const_iterator>::value) &&
- (std::is_same<ValueType, uint8_t>::value ||
- std::is_same<ValueType, int8_t>::value ||
- std::is_same<ValueType, char>::value ||
- std::is_same<ValueType, unsigned char>::value ||
- std::is_same<ValueType, signed char>::value);
+ sizeof(ValueType) == 1 &&
+ !std::is_same<ValueType, bool>::value;
}
template<typename Iterator>
diff --git a/tests/unit-tests/encoding/tlv.t.cpp b/tests/unit-tests/encoding/tlv.t.cpp
index edbb98f..8138e8a 100644
--- a/tests/unit-tests/encoding/tlv.t.cpp
+++ b/tests/unit-tests/encoding/tlv.t.cpp
@@ -23,6 +23,9 @@
#include "boost-test.hpp"
+#include <array>
+#include <deque>
+#include <list>
#include <boost/concept_archetype.hpp>
#include <boost/iostreams/stream.hpp>
#include <boost/iostreams/device/array.hpp>
@@ -74,6 +77,7 @@
ASSERT_READ_NUMBER_IS_SLOW(std::vector<uint16_t>::iterator);
ASSERT_READ_NUMBER_IS_SLOW(std::vector<uint32_t>::iterator);
ASSERT_READ_NUMBER_IS_SLOW(std::vector<uint64_t>::iterator);
+ASSERT_READ_NUMBER_IS_SLOW(std::deque<uint8_t>::iterator);
ASSERT_READ_NUMBER_IS_SLOW(std::list<uint8_t>::iterator);
ASSERT_READ_NUMBER_IS_SLOW(StreamIterator);