summaryrefslogtreecommitdiff
path: root/read_helper.h
diff options
context:
space:
mode:
Diffstat (limited to 'read_helper.h')
-rw-r--r--read_helper.h34
1 files changed, 18 insertions, 16 deletions
diff --git a/read_helper.h b/read_helper.h
index 2256ef8..f4615d4 100644
--- a/read_helper.h
+++ b/read_helper.h
@@ -3,7 +3,7 @@
#define LOCKFREE_READ_HELPER_H
#include <cassert>
-#include <cstdio>
+#include <fstream>
#include <random>
#include <vector>
@@ -15,9 +15,8 @@
#endif
#endif
-// template <typename key_type>
-class ReadHelper {
- typedef unsigned long long key_type;
+template <typename key_type> class ReadHelper_ {
+ // typedef unsigned long long key_type;
key_type max_value = std::numeric_limits<key_type>::min(),
min_value = std::numeric_limits<key_type>::max();
@@ -46,8 +45,8 @@ class ReadHelper {
public:
const size_t sample_length, population_length, random_number;
- ReadHelper(char const *filename, size_t sample_length,
- size_t population_length, size_t total_row = 0)
+ ReadHelper_(char const *filename, size_t sample_length,
+ size_t population_length, size_t total_row = 0)
: filename(filename), sample_length(sample_length),
population_length(population_length),
random_number(genRandomRow(total_row)) {
@@ -68,24 +67,24 @@ public:
bool readFile() {
this->population_vector.clear();
auto read_number = 0UL;
- FILE *file = fopen(filename, "r");
+ std::ifstream fin(filename);
- if (file == nullptr) {
- fprintf(stderr, "Unable to open file %s\n", filename);
+ if (!fin.is_open()) {
return false;
}
P_ERR("Reading sample");
- for (key_type i;
- read_number < sample_length && fscanf(file, "%lld ", &i) != EOF;
- store_into_vector(i))
+ for (key_type i; read_number < sample_length && !fin.eof();
+ store_into_vector(i)) {
+ fin >> i;
read_number++;
+ }
if (random_number > 0) {
P_ERR("\rReading skip");
// fprintf(stderr, "Skip %lu\n", read_number);
read_number = random_number;
- for (key_type i; read_number > 0 && fscanf(file, "%lld ", &i) != EOF;)
+ for (key_type i; read_number > 0 && !fin.eof(); fin >> i)
read_number--;
}
@@ -93,10 +92,11 @@ public:
read_number = 0;
auto remain = population_length + REVERSED_BLOCK;
- for (key_type i; read_number < remain && fscanf(file, "%lld ", &i) != EOF;
- store_into_vector(i))
+ for (key_type i; read_number < remain && !fin.eof(); store_into_vector(i)) {
+ fin >> i;
read_number++;
- fclose(file);
+ }
+ fin.close();
P_ERR("\r");
return true;
}
@@ -127,4 +127,6 @@ public:
size_t size() const { return this->population_vector.size(); }
};
+typedef ReadHelper_<unsigned long long> ReadHelper;
+
#endif \ No newline at end of file