summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Bauer <mail@ulrich-bauer.org>2016-08-05 15:05:52 +0200
committerUlrich Bauer <mail@ulrich-bauer.org>2016-08-05 15:05:52 +0200
commit3fa4fec040079f6489349556a97b238f2b002d6b (patch)
treee4ba91d484b5fdb67a4ee0fee207e667e787b5cd
parent504f323c8fea212491a325e4d92de738c2e2b84c (diff)
allow reading from stdin
-rw-r--r--ripser.cpp20
1 files changed, 12 insertions, 8 deletions
diff --git a/ripser.cpp b/ripser.cpp
index 9b74b8f..53840cf 100644
--- a/ripser.cpp
+++ b/ripser.cpp
@@ -687,7 +687,7 @@ void compute_pairs(std::vector<diameter_index_t>& columns_to_reduce,
#endif
}
-template <typename T> T read(std::ifstream& s) {
+template <typename T> T read(std::istream& s) {
T result;
s.read(reinterpret_cast<char*>(&result), sizeof(T));
return result; // on little endian: boost::endian::little_to_native(result);
@@ -713,8 +713,6 @@ void print_usage_and_exit(int exit_code) {
int main(int argc, char** argv) {
- if (argc < 2) print_usage_and_exit(-1);
-
const char* filename = nullptr;
index_t dim_max = 1;
@@ -752,12 +750,18 @@ int main(int argc, char** argv) {
filename = argv[i];
}
}
+
+ std::istream* input_stream_ptr = &std::cin;
+ std::ifstream input_file(filename);
+ if (filename) {
+ if (input_file.fail()) {
+ std::cerr << "couldn't open file " << filename << std::endl;
+ exit(-1);
+ }
+ input_stream_ptr = &input_file;
+ }
+ std::istream& input_stream = *input_stream_ptr;
- std::ifstream input_stream(filename);
- if (input_stream.fail()) {
- std::cerr << "couldn't open file " << filename << std::endl;
- exit(-1);
- }
#ifdef FILE_FORMAT_POINT_CLOUD