non member comp operator for iterators
This commit is contained in:
parent
f5ded3fa4b
commit
a0098e8b17
@ -7,14 +7,21 @@
|
|||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @brief Map implementation for maps with a pre-defined size.
|
||||||
|
* @details
|
||||||
|
* Can be initialized with desired maximum size.
|
||||||
|
* Iterator is used to access <key,value> pair and iterate through map entries.
|
||||||
|
* Complexity O(n).
|
||||||
* @warning Iterators return a non-const key_t in the pair.
|
* @warning Iterators return a non-const key_t in the pair.
|
||||||
* @warning A User is not allowed to change the key, otherwise the map is corrupted.
|
* @warning A User is not allowed to change the key, otherwise the map is corrupted.
|
||||||
* @ingroup container
|
* @ingroup container
|
||||||
*/
|
*/
|
||||||
template<typename key_t, typename T>
|
template<typename key_t, typename T>
|
||||||
class FixedMap: public SerializeIF {
|
class FixedMap: public SerializeIF {
|
||||||
static_assert (std::is_trivially_copyable<T>::value or std::is_base_of<SerializeIF, T>::value,
|
static_assert (std::is_trivially_copyable<T>::value or
|
||||||
"Types used in FixedMap must either be trivial copy-able or a derived Class from SerializeIF to be serialize-able");
|
std::is_base_of<SerializeIF, T>::value,
|
||||||
|
"Types used in FixedMap must either be trivial copy-able or a "
|
||||||
|
"derived class from SerializeIF to be serialize-able");
|
||||||
public:
|
public:
|
||||||
static const uint8_t INTERFACE_ID = CLASS_ID::FIXED_MAP;
|
static const uint8_t INTERFACE_ID = CLASS_ID::FIXED_MAP;
|
||||||
static const ReturnValue_t KEY_ALREADY_EXISTS = MAKE_RETURN_CODE(0x01);
|
static const ReturnValue_t KEY_ALREADY_EXISTS = MAKE_RETURN_CODE(0x01);
|
||||||
@ -54,6 +61,16 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
friend bool operator==(const typename FixedMap::Iterator& lhs,
|
||||||
|
const typename FixedMap::Iterator& rhs) {
|
||||||
|
return (lhs.value == rhs.value);
|
||||||
|
}
|
||||||
|
|
||||||
|
friend bool operator!=(const typename FixedMap::Iterator& lhs,
|
||||||
|
const typename FixedMap::Iterator& rhs) {
|
||||||
|
return not (lhs.value == rhs.value);
|
||||||
|
}
|
||||||
|
|
||||||
Iterator begin() const {
|
Iterator begin() const {
|
||||||
return Iterator(&theMap[0]);
|
return Iterator(&theMap[0]);
|
||||||
}
|
}
|
||||||
@ -136,6 +153,24 @@ public:
|
|||||||
return HasReturnvaluesIF::RETURN_OK;
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool empty() {
|
||||||
|
if(_size == 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool full() {
|
||||||
|
if(_size >= theMap.maxSize()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void clear() {
|
void clear() {
|
||||||
_size = 0;
|
_size = 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user