|
@@ -173,6 +173,7 @@ const char *latestFeatures[] = {
|
|
|
#include <map>
|
|
|
#include <set>
|
|
|
#include <cmath>
|
|
|
+#include <iterator>
|
|
|
#include <iostream>
|
|
|
#include <sstream>
|
|
|
#include <fstream>
|
|
@@ -901,7 +902,6 @@ public:
|
|
|
int size = int(c.size());
|
|
|
if (size <= 0)
|
|
|
__testlib_fail("random_t::any(const Container& c): c.size() must be positive");
|
|
|
- //return *(c.begin() + next(size));
|
|
|
typename Container::const_iterator it = c.begin();
|
|
|
std::advance(it, next(size));
|
|
|
return *it;
|
|
@@ -910,10 +910,9 @@ public:
|
|
|
/* Returns random element from iterator range. */
|
|
|
template<typename Iter>
|
|
|
typename Iter::value_type any(const Iter &begin, const Iter &end) {
|
|
|
- int size = int(end - begin);
|
|
|
+ int size = static_cast<int>(std::distance(begin, end));
|
|
|
if (size <= 0)
|
|
|
__testlib_fail("random_t::any(const Iter& begin, const Iter& end): range must have positive length");
|
|
|
- // return *(begin + next(size));
|
|
|
Iter it = begin;
|
|
|
std::advance(it, next(size));
|
|
|
return *it;
|
|
@@ -1102,20 +1101,24 @@ public:
|
|
|
/* Returns weighted random element from container. */
|
|
|
template<typename Container>
|
|
|
typename Container::value_type wany(const Container &c, int type) {
|
|
|
- size_t size = c.size();
|
|
|
+ int size = int(c.size());
|
|
|
if (size <= 0)
|
|
|
__testlib_fail("random_t::wany(const Container& c, int type): c.size() must be positive");
|
|
|
- return *(c.begin() + wnext(size, type));
|
|
|
+ typename Container::const_iterator it = c.begin();
|
|
|
+ std::advance(it, wnext(size, type));
|
|
|
+ return *it;
|
|
|
}
|
|
|
|
|
|
/* Returns weighted random element from iterator range. */
|
|
|
template<typename Iter>
|
|
|
typename Iter::value_type wany(const Iter &begin, const Iter &end, int type) {
|
|
|
- int size = int(end - begin);
|
|
|
+ int size = static_cast<int>(std::distance(begin, end));
|
|
|
if (size <= 0)
|
|
|
__testlib_fail(
|
|
|
"random_t::any(const Iter& begin, const Iter& end, int type): range must have positive length");
|
|
|
- return *(begin + wnext(size, type));
|
|
|
+ Iter it = begin;
|
|
|
+ std::advance(it, wnext(size, type));
|
|
|
+ return *it;
|
|
|
}
|
|
|
|
|
|
/* Returns random permutation of the given size (values are between `first` and `first`+size-1)*/
|
|
@@ -4401,7 +4404,7 @@ void registerGen(int argc, char *argv[]) {
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
-static void setAppesModeEncoding(std::string appesModeEncoding) {
|
|
|
+void setAppesModeEncoding(std::string appesModeEncoding) {
|
|
|
static const char* const ENCODINGS[] = {"ascii", "utf-7", "utf-8", "utf-16", "utf-16le", "utf-16be", "utf-32", "utf-32le", "utf-32be", "iso-8859-1",
|
|
|
"iso-8859-2", "iso-8859-3", "iso-8859-4", "iso-8859-5", "iso-8859-6", "iso-8859-7", "iso-8859-8", "iso-8859-9", "iso-8859-10", "iso-8859-11",
|
|
|
"iso-8859-13", "iso-8859-14", "iso-8859-15", "iso-8859-16", "windows-1250", "windows-1251", "windows-1252", "windows-1253", "windows-1254", "windows-1255",
|