Skip to content
Snippets Groups Projects
CSVReader.h 1.50 KiB
//
// Created by martin on 14.11.18.
//

#ifndef LIB4NEURO_CSVREADER_H
#define LIB4NEURO_CSVREADER_H

#include <string>

#include "../settings.h"
#include "../DataSet/DataSet.h"

namespace lib4neuro {

    /**
     *
     */
    class CSVReader {
    //TODO make more efficient - possibly with external library?

    private:

        /**
         *
         */
        std::string file_path;

        /**
         *
         */
        bool header_included;

        /**
         *
         */
        std::string delimiter;

        /**
         *
         */
        bool ignore_first_line;

        /**
         *
         */
        std::vector<std::vector<std::string>>* data;

    public:

        /**
         *
         * @param file_path
         * @param delimiter
         * @param ignore_first_line
         */
        LIB4NEURO_API CSVReader(std::string file_path, std::string delimiter=",", bool ignore_first_line=false);

        /**
         *
         */
        LIB4NEURO_API void read();

        /**
         *
         * @return
         */
         LIB4NEURO_API std::vector<std::vector<std::string>>* get_data();

        /**
         *
         * @param input_col_indices
         * @param output_col_indices
         * @return
         */
        LIB4NEURO_API DataSet get_data_set(std::vector<unsigned int>* input_col_indices,
                std::vector<unsigned int>* output_col_indices);

        /**
         *
         */
        LIB4NEURO_API void print_data();
    };
}

#endif //LIB4NEURO_CSVREADER_H