Main Page   Namespace List   Alphabetical List   Compound List   File List   Compound Members   File Members  

octaveio.h

Go to the documentation of this file.
00001 //-*- c++ -*--------------------------------------------------------
00002 //
00003 // Name:    octaveio.h
00004 // Author:  Hiroaki KAWASHIMA, Kyoto Univ.
00005 // Created: 20 Sep 2002
00006 // History:
00007 //   2002/09/20 Initial version
00008 // Description: 
00009 //   
00010 //------------------------------------------------------------------
00011 
00012 
00013 #ifndef __OCTAVEIO_H
00014 #define __OCTAVEIO_H
00015 
00016 #include <iostream>
00017 #include <fstream>
00018 #include <octave/config.h>
00019 #include <octave/Matrix.h>
00020 //#include <octave/RowVector.h>
00021 
00022 
00024 // ファイル名(char * もしくは std::string) >> Matrix
00025 // ファイル名(char * もしくは std::string) << Matrix
00026 
00027 inline void operator<<(const char * s, const Matrix &i)
00028 {
00029   std::ofstream fout(s);
00030   if(!fout.is_open()){
00031     std::cerr << "Can't open : " << s << std::endl;
00032     exit(1); 
00033   }
00034   fout << i.rows() << ' ' << i.cols() << std::endl;
00035   fout << i;
00036   fout.close();
00037 }
00038 
00039 inline void operator<<(const std::string &str, const Matrix &i)
00040 {
00041   operator<<(str.c_str(), i);
00042 }
00043 
00044 inline void operator>>(const char * s, Matrix &i)
00045 {
00046   std::ifstream fin(s);
00047   if(!fin.is_open()){
00048     std::cerr << "Can't open : " << s << std::endl;
00049     exit(1); 
00050   }
00051   int rows, cols;
00052   fin >> rows >> cols;
00053   if(rows!=i.rows() || cols!=i.cols()) i.resize(rows,cols);
00054   fin >> i;
00055   fin.close();
00056 }
00057 // end added
00058 
00059 
00060 inline void operator>>(const std::string &str, Matrix &i)
00061 {
00062   operator>>(str.c_str(), i);
00063 }
00064 
00066 // ファイル名(char * もしくは std::string) >> DiagMatrix
00067 // ファイル名(char * もしくは std::string) << DiagMatrix
00068 
00069 inline void operator<<(const char * s, const DiagMatrix &i)
00070 {
00071   std::ofstream fout(s);
00072   if(!fout.is_open()){
00073     std::cerr << "Can't open : " << s << std::endl;
00074     exit(1); 
00075   }
00076   fout << i.rows() << ' ' << i.cols() << std::endl;
00077   fout << (ColumnVector)i;
00078   fout.close();
00079 }
00080 
00081 inline void operator<<(const std::string &str, const DiagMatrix &i)
00082 {
00083   operator<<(str.c_str(), i);
00084 }
00085 
00086 inline void operator>>(const char * s, DiagMatrix &i)
00087 {
00088   std::ifstream fin(s);
00089   if(!fin.is_open()){
00090     std::cerr << "Can't open : " << s << std::endl;
00091     exit(1); 
00092   }
00093   int rows, cols;
00094   fin >> rows >> cols;
00095   if(rows!=i.rows() || cols!=i.cols()) i.resize(rows,cols);
00096   ColumnVector c;
00097   fin >> c;
00098   i = (DiagMatrix)c;
00099   fin.close();
00100 }
00101 // end added
00102 
00103 
00104 inline void operator>>(const std::string &str, DiagMatrix &i)
00105 {
00106   operator>>(str.c_str(), i);
00107 }
00108 
00110 // ファイル名(char * もしくは std::string) >> RowVector
00111 // ファイル名(char * もしくは std::string) << RowVector
00112 
00114 inline void operator<<(const char * s, const RowVector &i)
00115 {
00116   std::ofstream fout(s);
00117   if(!fout.is_open()){
00118     std::cerr << "Can't open : " << s << std::endl;
00119     exit(1); 
00120   }
00121   fout << i.length() << std::endl;
00122   fout << i;
00123   fout.close();
00124 }
00125 
00127 inline void operator<<(const std::string &str, const RowVector &i)
00128 {
00129   operator<<(str.c_str(), i);
00130 }
00131 
00133 inline void operator>>(const char * s, RowVector &i)
00134 {
00135   std::ifstream fin(s);
00136   if(!fin.is_open()){
00137     std::cerr << "Can't open : " << s << std::endl;
00138     exit(1); 
00139   }
00140   int length;
00141   fin >> length;
00142   if(length!=i.length()) i.resize(length);
00143   fin >> i;
00144   fin.close();
00145 }
00146 
00148 inline void operator>>(const std::string &str, RowVector &i)
00149 {
00150   operator>>(str.c_str(), i);
00151 }
00152 
00154 // ファイル名(char * もしくは std::string) >> ColumnVector
00155 // ファイル名(char * もしくは std::string) << ColumnVector
00156 
00158 inline void operator<<(const char * s, const ColumnVector &i)
00159 {
00160   std::ofstream fout(s);
00161   if(!fout.is_open()){
00162     std::cerr << "Can't open : " << s << std::endl;
00163     exit(1); 
00164   }
00165   fout << i.length() << std::endl;
00166   fout << i;
00167   fout.close();
00168 }
00169 
00171 inline void operator<<(const std::string &str, const ColumnVector &i)
00172 {
00173   operator<<(str.c_str(), i);
00174 }
00175 
00177 inline void operator>>(const char * s, ColumnVector &i)
00178 {
00179   std::ifstream fin(s);
00180   if(!fin.is_open()){
00181     std::cerr << "Can't open : " << s << std::endl;
00182     exit(1); 
00183   }
00184   int length;
00185   fin >> length;
00186   if(length!=i.length()) i.resize(length);
00187   fin >> i;
00188   fin.close();
00189 }
00190 
00192 inline void operator>>(const std::string &str, ColumnVector &i)
00193 {
00194   operator>>(str.c_str(), i);
00195 }
00196 
00197 #endif
00198 
00199 

Generated on Mon Aug 11 15:33:59 2003 for Octave-headers by doxygen1.3-rc3