Chris@49: // Copyright (C) 2008-2012 NICTA (www.nicta.com.au) Chris@49: // Copyright (C) 2008-2012 Conrad Sanderson Chris@49: // Copyright (C) 2009-2010 Ian Cullinan Chris@49: // Copyright (C) 2012 Ryan Curtin Chris@49: // Copyright (C) 2013 Szabolcs Horvat Chris@49: // Chris@49: // This Source Code Form is subject to the terms of the Mozilla Public Chris@49: // License, v. 2.0. If a copy of the MPL was not distributed with this Chris@49: // file, You can obtain one at http://mozilla.org/MPL/2.0/. Chris@49: Chris@49: Chris@49: //! \addtogroup diskio Chris@49: //! @{ Chris@49: Chris@49: Chris@49: //! class for saving and loading matrices and fields Chris@49: class diskio Chris@49: { Chris@49: public: Chris@49: Chris@49: template inline static std::string gen_txt_header(const Mat& x); Chris@49: template inline static std::string gen_bin_header(const Mat& x); Chris@49: Chris@49: template inline static std::string gen_bin_header(const SpMat& x); Chris@49: Chris@49: template inline static std::string gen_txt_header(const Cube& x); Chris@49: template inline static std::string gen_bin_header(const Cube& x); Chris@49: Chris@49: inline static file_type guess_file_type(std::istream& f); Chris@49: Chris@49: inline static char conv_to_hex_char(const u8 x); Chris@49: inline static void conv_to_hex(char* out, const u8 x); Chris@49: Chris@49: inline static std::string gen_tmp_name(const std::string& x); Chris@49: Chris@49: inline static bool safe_rename(const std::string& old_name, const std::string& new_name); Chris@49: Chris@49: template inline static bool convert_naninf(eT& val, const std::string& token); Chris@49: template inline static bool convert_naninf(std::complex& val, const std::string& token); Chris@49: Chris@49: // Chris@49: // matrix saving Chris@49: Chris@49: template inline static bool save_raw_ascii (const Mat& x, const std::string& final_name); Chris@49: template inline static bool save_raw_binary (const Mat& x, const std::string& final_name); Chris@49: template inline static bool save_arma_ascii (const Mat& x, const std::string& final_name); Chris@49: template inline static bool save_csv_ascii (const Mat& x, const std::string& final_name); Chris@49: template inline static bool save_arma_binary(const Mat& x, const std::string& final_name); Chris@49: template inline static bool save_pgm_binary (const Mat& x, const std::string& final_name); Chris@49: template inline static bool save_pgm_binary (const Mat< std::complex >& x, const std::string& final_name); Chris@49: template inline static bool save_hdf5_binary(const Mat& x, const std::string& final_name); Chris@49: Chris@49: template inline static bool save_raw_ascii (const Mat& x, std::ostream& f); Chris@49: template inline static bool save_raw_binary (const Mat& x, std::ostream& f); Chris@49: template inline static bool save_arma_ascii (const Mat& x, std::ostream& f); Chris@49: template inline static bool save_csv_ascii (const Mat& x, std::ostream& f); Chris@49: template inline static bool save_arma_binary(const Mat& x, std::ostream& f); Chris@49: template inline static bool save_pgm_binary (const Mat& x, std::ostream& f); Chris@49: template inline static bool save_pgm_binary (const Mat< std::complex >& x, std::ostream& f); Chris@49: Chris@49: Chris@49: // Chris@49: // matrix loading Chris@49: Chris@49: template inline static bool load_raw_ascii (Mat& x, const std::string& name, std::string& err_msg); Chris@49: template inline static bool load_raw_binary (Mat& x, const std::string& name, std::string& err_msg); Chris@49: template inline static bool load_arma_ascii (Mat& x, const std::string& name, std::string& err_msg); Chris@49: template inline static bool load_csv_ascii (Mat& x, const std::string& name, std::string& err_msg); Chris@49: template inline static bool load_arma_binary(Mat& x, const std::string& name, std::string& err_msg); Chris@49: template inline static bool load_pgm_binary (Mat& x, const std::string& name, std::string& err_msg); Chris@49: template inline static bool load_pgm_binary (Mat< std::complex >& x, const std::string& name, std::string& err_msg); Chris@49: template inline static bool load_hdf5_binary(Mat& x, const std::string& name, std::string& err_msg); Chris@49: template inline static bool load_auto_detect(Mat& x, const std::string& name, std::string& err_msg); Chris@49: Chris@49: template inline static bool load_raw_ascii (Mat& x, std::istream& f, std::string& err_msg); Chris@49: template inline static bool load_raw_binary (Mat& x, std::istream& f, std::string& err_msg); Chris@49: template inline static bool load_arma_ascii (Mat& x, std::istream& f, std::string& err_msg); Chris@49: template inline static bool load_csv_ascii (Mat& x, std::istream& f, std::string& err_msg); Chris@49: template inline static bool load_arma_binary(Mat& x, std::istream& f, std::string& err_msg); Chris@49: template inline static bool load_pgm_binary (Mat& x, std::istream& is, std::string& err_msg); Chris@49: template inline static bool load_pgm_binary (Mat< std::complex >& x, std::istream& is, std::string& err_msg); Chris@49: template inline static bool load_auto_detect(Mat& x, std::istream& f, std::string& err_msg); Chris@49: Chris@49: inline static void pnm_skip_comments(std::istream& f); Chris@49: Chris@49: Chris@49: // Chris@49: // sparse matrix saving Chris@49: Chris@49: template inline static bool save_coord_ascii(const SpMat& x, const std::string& final_name); Chris@49: template inline static bool save_arma_binary(const SpMat& x, const std::string& final_name); Chris@49: Chris@49: template inline static bool save_coord_ascii(const SpMat& x, std::ostream& f); Chris@49: template inline static bool save_coord_ascii(const SpMat< std::complex >& x, std::ostream& f); Chris@49: template inline static bool save_arma_binary(const SpMat& x, std::ostream& f); Chris@49: Chris@49: Chris@49: // Chris@49: // sparse matrix loading Chris@49: Chris@49: template inline static bool load_coord_ascii(SpMat& x, const std::string& name, std::string& err_msg); Chris@49: template inline static bool load_arma_binary(SpMat& x, const std::string& name, std::string& err_msg); Chris@49: Chris@49: template inline static bool load_coord_ascii(SpMat& x, std::istream& f, std::string& err_msg); Chris@49: template inline static bool load_coord_ascii(SpMat< std::complex >& x, std::istream& f, std::string& err_msg); Chris@49: template inline static bool load_arma_binary(SpMat& x, std::istream& f, std::string& err_msg); Chris@49: Chris@49: Chris@49: Chris@49: // Chris@49: // cube saving Chris@49: Chris@49: template inline static bool save_raw_ascii (const Cube& x, const std::string& name); Chris@49: template inline static bool save_raw_binary (const Cube& x, const std::string& name); Chris@49: template inline static bool save_arma_ascii (const Cube& x, const std::string& name); Chris@49: template inline static bool save_arma_binary(const Cube& x, const std::string& name); Chris@49: template inline static bool save_hdf5_binary(const Cube& x, const std::string& name); Chris@49: Chris@49: template inline static bool save_raw_ascii (const Cube& x, std::ostream& f); Chris@49: template inline static bool save_raw_binary (const Cube& x, std::ostream& f); Chris@49: template inline static bool save_arma_ascii (const Cube& x, std::ostream& f); Chris@49: template inline static bool save_arma_binary(const Cube& x, std::ostream& f); Chris@49: Chris@49: Chris@49: // Chris@49: // cube loading Chris@49: Chris@49: template inline static bool load_raw_ascii (Cube& x, const std::string& name, std::string& err_msg); Chris@49: template inline static bool load_raw_binary (Cube& x, const std::string& name, std::string& err_msg); Chris@49: template inline static bool load_arma_ascii (Cube& x, const std::string& name, std::string& err_msg); Chris@49: template inline static bool load_arma_binary(Cube& x, const std::string& name, std::string& err_msg); Chris@49: template inline static bool load_hdf5_binary(Cube& x, const std::string& name, std::string& err_msg); Chris@49: template inline static bool load_auto_detect(Cube& x, const std::string& name, std::string& err_msg); Chris@49: Chris@49: template inline static bool load_raw_ascii (Cube& x, std::istream& f, std::string& err_msg); Chris@49: template inline static bool load_raw_binary (Cube& x, std::istream& f, std::string& err_msg); Chris@49: template inline static bool load_arma_ascii (Cube& x, std::istream& f, std::string& err_msg); Chris@49: template inline static bool load_arma_binary(Cube& x, std::istream& f, std::string& err_msg); Chris@49: template inline static bool load_auto_detect(Cube& x, std::istream& f, std::string& err_msg); Chris@49: Chris@49: Chris@49: // Chris@49: // field saving and loading Chris@49: Chris@49: template inline static bool save_arma_binary(const field& x, const std::string& name); Chris@49: template inline static bool save_arma_binary(const field& x, std::ostream& f); Chris@49: Chris@49: template inline static bool load_arma_binary( field& x, const std::string& name, std::string& err_msg); Chris@49: template inline static bool load_arma_binary( field& x, std::istream& f, std::string& err_msg); Chris@49: Chris@49: template inline static bool load_auto_detect( field& x, const std::string& name, std::string& err_msg); Chris@49: template inline static bool load_auto_detect( field& x, std::istream& f, std::string& err_msg); Chris@49: Chris@49: inline static bool save_std_string(const field& x, const std::string& name); Chris@49: inline static bool save_std_string(const field& x, std::ostream& f); Chris@49: Chris@49: inline static bool load_std_string( field& x, const std::string& name, std::string& err_msg); Chris@49: inline static bool load_std_string( field& x, std::istream& f, std::string& err_msg); Chris@49: Chris@49: Chris@49: Chris@49: // Chris@49: // handling of PPM images by cubes Chris@49: Chris@49: template inline static bool save_ppm_binary(const Cube& x, const std::string& final_name); Chris@49: template inline static bool save_ppm_binary(const Cube& x, std::ostream& f); Chris@49: Chris@49: template inline static bool load_ppm_binary( Cube& x, const std::string& final_name, std::string& err_msg); Chris@49: template inline static bool load_ppm_binary( Cube& x, std::istream& f, std::string& err_msg); Chris@49: Chris@49: Chris@49: // Chris@49: // handling of PPM images by fields Chris@49: Chris@49: template inline static bool save_ppm_binary(const field& x, const std::string& final_name); Chris@49: template inline static bool save_ppm_binary(const field& x, std::ostream& f); Chris@49: Chris@49: template inline static bool load_ppm_binary( field& x, const std::string& final_name, std::string& err_msg); Chris@49: template inline static bool load_ppm_binary( field& x, std::istream& f, std::string& err_msg); Chris@49: Chris@49: Chris@49: Chris@49: }; Chris@49: Chris@49: Chris@49: Chris@49: //! @}