Commit 42942c47 authored by Paul Asmuth's avatar Paul Asmuth
Browse files

FileInputStream

parent c7de20db
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@ enable_testing()

set(FNORDMETRIC_SOURCES
    src/util/format.cc
    src/util/inputstream.cc
    src/util/runtimeexception.cc)

set(FNORDMETRIC_UI_SOURCES
+4 −1
Original line number Diff line number Diff line
@@ -20,7 +20,10 @@ std::unique_ptr<CSVInputStream> CSVInputStream::openFile(
    char row_seperator /* = '\n' */,
    char quote_char /* = '"' */) {
  auto csv_file = new CSVInputStream(
      fnordmetric::util::FileInputStream::openFile(file_path));
      fnordmetric::util::FileInputStream::openFile(file_path),
      column_seperator,
      row_seperator,
      quote_char);

  return std::unique_ptr<CSVInputStream>(csv_file);
}
+16 −9
Original line number Diff line number Diff line
@@ -4,28 +4,35 @@
 *
 * Licensed under the MIT license (see LICENSE).
 */
#include <string>
#include <fcntl.h>
#include "inputstream.h"
#include "runtimeexception.h"

namespace fnordmetric {
namespace util {

std::unique_ptr<InputStream> InputStream::openFile(
    const std::string& file_path,
    char column_seperator /* = ',' */,
    char row_seperator /* = '\n' */,
    char quote_char /* = '"' */) {
std::unique_ptr<FileInputStream> FileInputStream::openFile(
    const std::string& file_path) {
  auto fp = file_path.c_str();
  int fd = open(fp, O_RDONLY);

  if (fd < 1) {
    throw RUNTIME_EXCEPTION_ERRNO(
        &typeid(InputStream),
        ERR_CSV_CANNOT_OPEN_FILE,
        &typeid(FileInputStream),
        0,
        "error opening file '%s'",
        fp);
  }

  auto csv_file = new InputStream(fd);
  return std::unique_ptr<InputStream>(csv_file);
  auto csv_file = new FileInputStream(fd);
  return std::unique_ptr<FileInputStream>(csv_file);
}

FileInputStream::FileInputStream(int fd) : fd_(fd) {}

bool FileInputStream::readNextByte(char* target) {

}

/*
+2 −0
Original line number Diff line number Diff line
@@ -6,12 +6,14 @@
 */
#ifndef _FNORDMETRIC_INPUTSTREAM_H
#define _FNORDMETRIC_INPUTSTREAM_H
#include <memory>

namespace fnordmetric {
namespace util {

class InputStream {
public:
  InputStream() {}
  InputStream(const InputStream& other) = delete;
  InputStream& operator=(const InputStream& other) = delete;
  virtual ~InputStream() {}