Program Listing for File io_utils.h

Return to documentation for file (src/rlenvs/utils/io/io_utils.h)

#ifndef IO_UTILS_H
#define IO_UTILS_H

#include <ostream>
#include <vector>

namespace rlenvscpp{
namespace utils{
namespace io{

template<typename T>
std::ostream& print_vector(std::ostream& out,
                         const std::vector<T>& obs){

    if(obs.empty()){
        out<<"[]"<<std::endl;
    }
    else{
        auto obs_str = std::to_string(obs[0]);
        for(uint_t i=1; i<obs.size(); ++i){
           obs_str += ",";
           obs_str += std::to_string(obs[i]);
        }
        out<<obs_str<<std::endl;
    }

    return out;

}

    template<typename T>
std::ostream& print_vector(std::ostream& out,
                         const std::vector<std::vector<T>>& obs){

    for(uint_t i=0; i<obs.size(); ++i)
    {
        print_vector(out, obs[i]);
    }
    return out;
}
    template<typename T>
std::ostream& print_vector(std::ostream& out,
                     const std::vector<std::vector<std::vector<T>>>& obs){

    for(uint_t i=0; i<obs.size(); ++i)
    {
        print_vector(out, obs[i]);
    }
    return out;
}

template<typename T>
std::ostream& operator<<(std::ostream& out,
                         const std::vector<T>& obs){
    return print_vector(out, obs);
}

}
}
}

#endif