From 8bf668665b107469086f16cb8ad23e47d479d2b4 Mon Sep 17 00:00:00 2001 From: Daniel Wilhelm Date: Fri, 18 Apr 2014 17:14:37 +0200 Subject: 4.0 --- shared/global_func.h | 99 ++++------------------------------------------------ 1 file changed, 7 insertions(+), 92 deletions(-) (limited to 'shared/global_func.h') diff --git a/shared/global_func.h b/shared/global_func.h index 861e2081..b3c13a24 100644 --- a/shared/global_func.h +++ b/shared/global_func.h @@ -7,106 +7,21 @@ #ifndef GLOBALFUNCTIONS_H_INCLUDED #define GLOBALFUNCTIONS_H_INCLUDED -#include -#include -#include -#include -#include +#include namespace common { //little rounding function -inline int round(double d) { return static_cast(d < 0 ? d - 0.5 : d + 0.5); } - -//absolute value -template inline T abs(const T& d) { return d < 0 ? -d : d; } - -size_t getDigitCount(size_t number); //count number of digits - -//Note: the following lines are a performance optimization for deleting elements from a vector: linear runtime at most! -template -void removeRowsFromVector(const std::set& rowsToRemove, std::vector& grid); - -//enhanced binary search template: returns an iterator -template -ForwardIterator custom_binary_search(ForwardIterator first, ForwardIterator last, const T& value, Compare comp = std::less()); -} - - -//############################################################################ - - - - - - - - - - - - - - - - - - - - - -//---------------Inline Implementation--------------------------------------------------- inline -size_t common::getDigitCount(size_t number) //count number of digits -{ - return number == 0 ? 1 : static_cast(::log10(static_cast(number))) + 1; -} - - -//Note: the following lines are a performance optimization for deleting elements from a vector: linear runtime at most! -template -void common::removeRowsFromVector(const std::set& rowsToRemove, std::vector& grid) -{ - if (rowsToRemove.empty()) - return; - - std::set::const_iterator rowToSkipIndex = rowsToRemove.begin(); - size_t rowToSkip = *rowToSkipIndex; - - if (rowToSkip >= grid.size()) - return; - - typename std::vector::iterator insertPos = grid.begin() + rowToSkip; - - for (size_t i = rowToSkip; i < grid.size(); ++i) - { - if (i != rowToSkip) - { - *insertPos = grid[i]; - ++insertPos; - } - else - { - ++rowToSkipIndex; - if (rowToSkipIndex != rowsToRemove.end()) - rowToSkip = *rowToSkipIndex; - } - } - grid.erase(insertPos, grid.end()); -} +int round(double d) { return static_cast(d < 0 ? d - 0.5 : d + 0.5); } +//absolute value +template inline +T abs(const T& d) { return d < 0 ? -d : d; } -//enhanced binary search template: returns an iterator -template inline -ForwardIterator common::custom_binary_search(ForwardIterator first, ForwardIterator last, const T& value, Compare comp) -{ - first = std::lower_bound(first, last, value, comp); - if (first != last && !comp(value, *first)) - return first; - else - return last; +size_t getDigitCount(size_t number) { return number == 0 ? 1 : static_cast(std::log10(static_cast(number))) + 1; } //count number of digits } -#endif // GLOBALFUNCTIONS_H_INCLUDED +#endif //GLOBALFUNCTIONS_H_INCLUDED -- cgit