diff options
Diffstat (limited to 'shared/globalFunctions.h')
-rw-r--r-- | shared/globalFunctions.h | 239 |
1 files changed, 0 insertions, 239 deletions
diff --git a/shared/globalFunctions.h b/shared/globalFunctions.h deleted file mode 100644 index fe65889f..00000000 --- a/shared/globalFunctions.h +++ /dev/null @@ -1,239 +0,0 @@ -// ************************************************************************** -// * This file is part of the FreeFileSync project. It is distributed under * -// * GNU General Public License: http://www.gnu.org/licenses/gpl.html * -// * Copyright (C) 2008-2010 ZenJu (zhnmju123 AT gmx.de) * -// ************************************************************************** -// -#ifndef GLOBALFUNCTIONS_H_INCLUDED -#define GLOBALFUNCTIONS_H_INCLUDED - -#include <string> -#include <algorithm> -#include <vector> -#include <set> -#include <wx/string.h> -#include <wx/longlong.h> -#include <memory> -#include <sstream> - -class wxStopWatch; - - -namespace globalFunctions -{ -//------------------------------------------------ -// FUNCTIONS -//------------------------------------------------ -inline -int round(double d) //little rounding function -{ - return static_cast<int>(d < 0 ? d - .5 : d + .5); -} - -template <class T> -inline -T abs(const T& d) //absolute value -{ - return(d < 0 ? -d : d); -} - - -//number conversion C++ ANSI/wide char versions -template <class CharType, class T> -std::basic_string<CharType> numberToString(const T& number); //convert number to string the C++ way - -template <class T, class CharType> -T stringToNumber(const std::basic_string<CharType>& input); //convert number to string the C++ way - -//number conversion wxWidgets -template <class T> wxString numberToString(const T& number); -template <class T> T stringToNumber(const wxString& input); - - -size_t getDigitCount(size_t number); //count number of digits - -//serialization: read/write numbers: int, long, unsigned int ... ect -template <class T> T readNumber(std::istream& stream); -template <class T> void writeNumber(std::ostream& stream, T number); - -inline -wxLongLong convertToSigned(const wxULongLong number) -{ - return wxLongLong(number.GetHi(), number.GetLo()); -} - - -//Note: the following lines are a performance optimization for deleting elements from a vector: linear runtime at most! -template <class T> -void removeRowsFromVector(const std::set<size_t>& rowsToRemove, std::vector<T>& grid); - -//enhanced binary search template: returns an iterator -template <class ForwardIterator, class T, typename Compare> -ForwardIterator custom_binary_search(ForwardIterator first, ForwardIterator last, const T& value, Compare comp = std::less<T>()); -} - - -//############################################################################ -class Performance -{ -public: - wxDEPRECATED(Performance()); //generate compiler warnings as a reminder to remove code after measurements - ~Performance(); - void showResult(); - -private: - bool resultWasShown; - std::auto_ptr<wxStopWatch> timer; -}; - -//two macros for quick performance measurements -#define PERF_START Performance a; -#define PERF_STOP a.showResult(); - - -//############################################################################ -class wxFile; -class DebugLog -{ -public: - wxDEPRECATED(DebugLog()); - ~DebugLog(); - void write(const wxString& logText); - -private: - wxString assembleFileName(); - wxString logfileName; - int lineCount; - wxFile* logFile; //logFile.close(); <- not needed -}; -extern DebugLog logDebugInfo; -wxString getCodeLocation(const wxString file, const int line); - -//small macro for writing debug information into a logfile -#define WRITE_DEBUG_LOG(x) logDebugInfo.write(getCodeLocation(__TFILE__, __LINE__) + x); -//speed alternative: wxLogDebug(wxT("text")) + DebugView - - - - - - - - - - - - - - - - - - - - - -//---------------Inline Implementation--------------------------------------------------- -template <class CharType, class T> -inline -std::basic_string<CharType> globalFunctions::numberToString(const T& number) //convert number to string the C++ way -{ - std::basic_ostringstream<CharType> ss; - ss << number; - return ss.str(); -} - - -template <class T, class CharType> -inline -T globalFunctions::stringToNumber(const std::basic_string<CharType>& input) //convert number to string the C++ way -{ - std::basic_istringstream<CharType> ss(input); - T number; - ss >> number; - return number; -} - - -template <class T> -inline -wxString globalFunctions::numberToString(const T& number) -{ - return numberToString<wxChar, T>(number).c_str(); -} - - -template <class T> -inline -T globalFunctions::stringToNumber(const wxString& input) -{ - const std::basic_string<wxChar> inputConv = input.c_str(); - return stringToNumber<T, wxChar>(inputConv); -} - - -//Note: the following lines are a performance optimization for deleting elements from a vector: linear runtime at most! -template <class T> -void globalFunctions::removeRowsFromVector(const std::set<size_t>& rowsToRemove, std::vector<T>& grid) -{ - if (rowsToRemove.empty()) - return; - - std::set<size_t>::const_iterator rowToSkipIndex = rowsToRemove.begin(); - size_t rowToSkip = *rowToSkipIndex; - - if (rowToSkip >= grid.size()) - return; - - typename std::vector<T>::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()); -} - - -//enhanced binary search template: returns an iterator -template <class ForwardIterator, class T, typename Compare> -inline -ForwardIterator globalFunctions::custom_binary_search(ForwardIterator first, ForwardIterator last, const T& value, Compare comp) -{ - first = lower_bound(first, last, value, comp); - if (first != last && !comp(value, *first)) - return first; - else - return last; -} - - -template <class T> -inline -T globalFunctions::readNumber(std::istream& stream) -{ - T result = 0; - stream.read(reinterpret_cast<char*>(&result), sizeof(T)); - return result; -} - - -template <class T> -inline -void globalFunctions::writeNumber(std::ostream& stream, T number) -{ - stream.write(reinterpret_cast<const char*>(&number), sizeof(T)); -} - - -#endif // GLOBALFUNCTIONS_H_INCLUDED |