00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 class diskio
00024 {
00025 public:
00026
00027 template<typename eT>
00028 struct is_supported_type
00029 {
00030 static const bool value =
00031 (
00032 false
00033 || is_u8<eT>::value
00034 || is_s8<eT>::value
00035 || is_u16<eT>::value
00036 || is_s16<eT>::value
00037 || is_u32<eT>::value
00038 || is_s32<eT>::value
00039 || is_float<eT>::value
00040 || is_double<eT>::value
00041 || is_complex_float<eT>::value
00042 || is_complex_double<eT>::value
00043 );
00044 };
00045
00046
00047 template<typename eT> inline static std::string gen_txt_header(const Mat<eT>& x);
00048 template<typename eT> inline static std::string gen_bin_header(const Mat<eT>& x);
00049
00050 template<typename eT> inline static std::string gen_txt_header(const Cube<eT>& x);
00051 template<typename eT> inline static std::string gen_bin_header(const Cube<eT>& x);
00052
00053
00054 inline static char conv_to_hex_char(const u8 x);
00055 inline static void conv_to_hex(char* out, const u8 x);
00056
00057 inline static std::string gen_tmp_name(const std::string& x);
00058
00059 inline static void safe_rename(const std::string& old_name, const std::string& new_name);
00060
00061
00062
00063
00064
00065 template<typename eT> inline static void save_raw_ascii (const Mat<eT>& x, const std::string& final_name);
00066 template<typename eT> inline static void save_raw_ascii (const Mat<eT>& x, const std::string& name, std::ostream& f);
00067 template<typename eT> inline static void save_arma_ascii (const Mat<eT>& x, const std::string& final_name);
00068 template<typename eT> inline static void save_arma_ascii (const Mat<eT>& x, const std::string& name, std::ostream& f);
00069 template<typename eT> inline static void save_arma_binary(const Mat<eT>& x, const std::string& final_name);
00070 template<typename eT> inline static void save_arma_binary(const Mat<eT>& x, const std::string& name, std::ostream& f);
00071 template<typename eT> inline static void save_pgm_binary (const Mat<eT>& x, const std::string& final_nname);
00072 template<typename eT> inline static void save_pgm_binary (const Mat<eT>& x, const std::string& name, std::ostream& f);
00073 template<typename T> inline static void save_pgm_binary (const Mat< std::complex<T> >& x, const std::string& final_name);
00074 template<typename T> inline static void save_pgm_binary (const Mat< std::complex<T> >& x, const std::string& name, std::ostream& f);
00075
00076
00077
00078
00079
00080 template<typename eT> inline static void load_raw_ascii (Mat<eT>& x, const std::string& name);
00081 template<typename eT> inline static void load_raw_ascii (Mat<eT>& x, const std::string& name, std::istream& f);
00082 template<typename eT> inline static void load_arma_ascii (Mat<eT>& x, const std::string& name);
00083 template<typename eT> inline static void load_arma_ascii (Mat<eT>& x, const std::string& name, std::istream& f);
00084 template<typename eT> inline static void load_arma_binary(Mat<eT>& x, const std::string& name);
00085 template<typename eT> inline static void load_arma_binary(Mat<eT>& x, const std::string& name, std::istream& f);
00086 template<typename eT> inline static void load_pgm_binary (Mat<eT>& x, const std::string& name);
00087 template<typename eT> inline static void load_pgm_binary (Mat<eT>& x, const std::string& name, std::istream& is);
00088 template<typename T> inline static void load_pgm_binary (Mat< std::complex<T> >& x, const std::string& name);
00089 template<typename T> inline static void load_pgm_binary (Mat< std::complex<T> >& x, const std::string& name, std::istream& is);
00090 template<typename eT> inline static void load_auto_detect(Mat<eT>& x, const std::string& name);
00091 template<typename eT> inline static void load_auto_detect(Mat<eT>& x, const std::string& name, std::istream& f);
00092
00093 inline static void pnm_skip_comments(std::istream& f);
00094
00095
00096
00097
00098
00099 template<typename eT> inline static void save_raw_ascii (const Cube<eT>& x, const std::string& name);
00100 template<typename eT> inline static void save_raw_ascii (const Cube<eT>& x, const std::string& name, std::ostream& f);
00101 template<typename eT> inline static void save_arma_ascii (const Cube<eT>& x, const std::string& name);
00102 template<typename eT> inline static void save_arma_ascii (const Cube<eT>& x, const std::string& name, std::ostream& f);
00103 template<typename eT> inline static void save_arma_binary(const Cube<eT>& x, const std::string& name);
00104 template<typename eT> inline static void save_arma_binary(const Cube<eT>& x, const std::string& name, std::ostream& f);
00105
00106
00107
00108
00109
00110 template<typename eT> inline static void load_raw_ascii (Cube<eT>& x, const std::string& name);
00111 template<typename eT> inline static void load_raw_ascii (Cube<eT>& x, const std::string& name, std::istream& f);
00112 template<typename eT> inline static void load_arma_ascii (Cube<eT>& x, const std::string& name);
00113 template<typename eT> inline static void load_arma_ascii (Cube<eT>& x, const std::string& name, std::istream& f);
00114 template<typename eT> inline static void load_arma_binary(Cube<eT>& x, const std::string& name);
00115 template<typename eT> inline static void load_arma_binary(Cube<eT>& x, const std::string& name, std::istream& f);
00116 template<typename eT> inline static void load_auto_detect(Cube<eT>& x, const std::string& name);
00117 template<typename eT> inline static void load_auto_detect(Cube<eT>& x, const std::string& name, std::istream& f);
00118
00119
00120
00121
00122
00123 template<typename T1> inline static void save_arma_binary(const field<T1>& x, const std::string& name);
00124 template<typename T1> inline static void save_arma_binary(const field<T1>& x, const std::string& name, std::ostream& f);
00125 template<typename T1> inline static void load_arma_binary( field<T1>& x, const std::string& name);
00126 template<typename T1> inline static void load_arma_binary( field<T1>& x, const std::string& name, std::istream& f);
00127
00128 inline static void save_std_string(const field<std::string>& x, const std::string& name);
00129 inline static void save_std_string(const field<std::string>& x, const std::string& name, std::ostream& f);
00130 inline static void load_std_string( field<std::string>& x, const std::string& name);
00131 inline static void load_std_string( field<std::string>& x, const std::string& name, std::istream& f);
00132
00133 template<typename T1> inline static void load_auto_detect(field<T1>& x, const std::string& name);
00134 template<typename T1> inline static void load_auto_detect(field<T1>& x, const std::string& name, std::istream& f);
00135
00136
00137
00138
00139
00140 template<typename T1> inline static void save_ppm_binary(const Cube<T1>& x, const std::string& final_name);
00141 template<typename T1> inline static void save_ppm_binary(const Cube<T1>& x, const std::string& name, std::ostream& f);
00142 template<typename T1> inline static void load_ppm_binary( Cube<T1>& x, const std::string& final_name);
00143 template<typename T1> inline static void load_ppm_binary( Cube<T1>& x, const std::string& name, std::istream& f);
00144
00145 template<typename T1> inline static void save_ppm_binary(const field<T1>& x, const std::string& final_name);
00146 template<typename T1> inline static void save_ppm_binary(const field<T1>& x, const std::string& final_name, std::ostream& f);
00147 template<typename T1> inline static void load_ppm_binary( field<T1>& x, const std::string& final_name);
00148 template<typename T1> inline static void load_ppm_binary( field<T1>& x, const std::string& final_name, std::istream& f);
00149
00150
00151
00152 };
00153
00154
00155