lyx_mirror/src/support/lyxalgo.h
2020-11-21 20:32:16 +02:00

49 lines
913 B
C++

// -*- C++ -*-
/**
* \file lyxalgo.h
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author Lars Gullik Bjønnes
*
* Full author contact details are available in file CREDITS.
*
* A variety of useful templates.
*/
#ifndef LYX_ALGO_H
#define LYX_ALGO_H
namespace lyx {
/// Returns true if the sequence first,last is sorted, false if not.
template <class For>
bool sorted(For first, For last)
{
if (first == last) return true;
For tmp = first;
while (++tmp != last) {
if (*tmp < *first++) return false;
}
return true;
}
/// Cmp is the same Cmp as you would pass to std::sort.
template <class For, class Cmp>
bool sorted(For first, For last, Cmp cmp)
{
if (first == last) return true;
For tmp = first;
while (++tmp != last) {
if (cmp(*tmp, *first++)) return false;
}
return true;
}
} // namespace lyx
#endif // LYX_ALGO_H