tpp extraction
This commit is contained in:
parent
315777d265
commit
26454356f8
@ -1,9 +1,8 @@
|
|||||||
#ifndef FSFW_CONTAINER_FIXEDORDEREDMULTIMAP_H_
|
#ifndef FSFW_CONTAINER_FIXEDORDEREDMULTIMAP_H_
|
||||||
#define FSFW_CONTAINER_FIXEDORDEREDMULTIMAP_H_
|
#define FSFW_CONTAINER_FIXEDORDEREDMULTIMAP_H_
|
||||||
|
|
||||||
#include "../container/ArrayList.h"
|
#include "ArrayList.h"
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <set>
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Map implementation which allows entries with identical keys
|
* @brief Map implementation which allows entries with identical keys
|
||||||
@ -72,56 +71,15 @@ public:
|
|||||||
*/
|
*/
|
||||||
ReturnValue_t exists(key_t key) const;
|
ReturnValue_t exists(key_t key) const;
|
||||||
|
|
||||||
ReturnValue_t erase(Iterator *iter) {
|
ReturnValue_t erase(Iterator *iter);
|
||||||
uint32_t i;
|
ReturnValue_t erase(key_t key);
|
||||||
if ((i = findFirstIndex((*iter).value->first)) >= _size) {
|
|
||||||
return KEY_DOES_NOT_EXIST;
|
|
||||||
}
|
|
||||||
removeFromPosition(i);
|
|
||||||
if (*iter != begin()) {
|
|
||||||
(*iter)--;
|
|
||||||
} else {
|
|
||||||
*iter = begin();
|
|
||||||
}
|
|
||||||
return HasReturnvaluesIF::RETURN_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
ReturnValue_t erase(key_t key) {
|
Iterator find(key_t key) const;
|
||||||
uint32_t i;
|
ReturnValue_t find(key_t key, T **value) const;
|
||||||
if ((i = findFirstIndex(key)) >= _size) {
|
|
||||||
return KEY_DOES_NOT_EXIST;
|
|
||||||
}
|
|
||||||
do {
|
|
||||||
removeFromPosition(i);
|
|
||||||
i = findFirstIndex(key, i);
|
|
||||||
} while (i < _size);
|
|
||||||
return HasReturnvaluesIF::RETURN_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
Iterator find(key_t key) const {
|
void clear();
|
||||||
ReturnValue_t result = exists(key);
|
|
||||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
|
||||||
return end();
|
|
||||||
}
|
|
||||||
return Iterator(&theMap[findFirstIndex(key)]);
|
|
||||||
}
|
|
||||||
|
|
||||||
ReturnValue_t find(key_t key, T **value) const {
|
size_t maxSize() const;
|
||||||
ReturnValue_t result = exists(key);
|
|
||||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
*value = &theMap[findFirstIndex(key)].second;
|
|
||||||
return HasReturnvaluesIF::RETURN_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
void clear() {
|
|
||||||
_size = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t maxSize() const {
|
|
||||||
return theMap.maxSize();
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
typedef KEY_COMPARE compare;
|
typedef KEY_COMPARE compare;
|
||||||
|
@ -71,4 +71,73 @@ inline ReturnValue_t FixedOrderedMultimap<key_t, T, KEY_COMPARE>::exists(
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename key_t, typename T, typename KEY_COMPARE>
|
||||||
|
inline ReturnValue_t FixedOrderedMultimap<key_t, T, KEY_COMPARE>::erase(
|
||||||
|
Iterator *iter)
|
||||||
|
{
|
||||||
|
uint32_t i;
|
||||||
|
if ((i = findFirstIndex((*iter).value->first)) >= _size) {
|
||||||
|
return KEY_DOES_NOT_EXIST;
|
||||||
|
}
|
||||||
|
removeFromPosition(i);
|
||||||
|
if (*iter != begin()) {
|
||||||
|
(*iter)--;
|
||||||
|
} else {
|
||||||
|
*iter = begin();
|
||||||
|
}
|
||||||
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename key_t, typename T, typename KEY_COMPARE>
|
||||||
|
inline ReturnValue_t FixedOrderedMultimap<key_t, T, KEY_COMPARE>::erase(
|
||||||
|
key_t key)
|
||||||
|
{
|
||||||
|
uint32_t i;
|
||||||
|
if ((i = findFirstIndex(key)) >= _size) {
|
||||||
|
return KEY_DOES_NOT_EXIST;
|
||||||
|
}
|
||||||
|
do {
|
||||||
|
removeFromPosition(i);
|
||||||
|
i = findFirstIndex(key, i);
|
||||||
|
} while (i < _size);
|
||||||
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename key_t, typename T, typename KEY_COMPARE>
|
||||||
|
inline ReturnValue_t FixedOrderedMultimap<key_t, T, KEY_COMPARE>::find(
|
||||||
|
key_t key, T **value) const
|
||||||
|
{
|
||||||
|
ReturnValue_t result = exists(key);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
*value = &theMap[findFirstIndex(key)].second;
|
||||||
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename key_t, typename T, typename KEY_COMPARE>
|
||||||
|
inline typename FixedOrderedMultimap<key_t, T, KEY_COMPARE>::Iterator
|
||||||
|
FixedOrderedMultimap<key_t, T, KEY_COMPARE>::find(
|
||||||
|
key_t key) const
|
||||||
|
{
|
||||||
|
ReturnValue_t result = exists(key);
|
||||||
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
return end();
|
||||||
|
}
|
||||||
|
return Iterator(&theMap[findFirstIndex(key)]);
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename key_t, typename T, typename KEY_COMPARE>
|
||||||
|
inline void FixedOrderedMultimap<key_t, T, KEY_COMPARE>::clear()
|
||||||
|
{
|
||||||
|
_size = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename key_t, typename T, typename KEY_COMPARE>
|
||||||
|
inline size_t FixedOrderedMultimap<key_t, T, KEY_COMPARE>::maxSize() const
|
||||||
|
{
|
||||||
|
return theMap.maxSize();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif /* FRAMEWORK_CONTAINER_FIXEDORDEREDMULTIMAP_TPP_ */
|
#endif /* FRAMEWORK_CONTAINER_FIXEDORDEREDMULTIMAP_TPP_ */
|
||||||
|
Loading…
Reference in New Issue
Block a user