File indexing completed on 2025-04-19 09:09:52
0001 #ifndef ATOOLS_Org_File_IO_Base_H
0002 #define ATOOLS_Org_File_IO_Base_H
0003
0004 #include "ATOOLS/Org/My_File.H"
0005 #include <vector>
0006 #define AT(VECTOR,ELEMENT) VECTOR.at(ELEMENT)
0007
0008 namespace ATOOLS {
0009
0010 class File_IO_Base {
0011 private:
0012
0013 std::vector<My_In_File> m_infiles;
0014 std::vector<My_Out_File> m_outfiles;
0015
0016 protected:
0017
0018 inline My_In_File &InFile(const unsigned int i=0)
0019 { return AT(m_infiles,i); }
0020 inline My_Out_File &OutFile(const unsigned int i=0)
0021 { return AT(m_outfiles,i); }
0022
0023 public:
0024
0025
0026 File_IO_Base(const unsigned int inputfiles=1,
0027 const unsigned int outputfiles=1);
0028
0029
0030 virtual ~File_IO_Base();
0031
0032
0033 inline void SetInputPath(const std::string inputpath,
0034 const unsigned int i=0)
0035 { AT(m_infiles,i).SetPath(inputpath); }
0036 inline void SetInputFile(const std::string inputfile,
0037 const unsigned int i=0)
0038 { AT(m_infiles,i).SetFile(inputfile); }
0039 inline void SetInFileMode(const fom::code infilemode,
0040 const unsigned int i=0)
0041 { AT(m_infiles,i).SetMode(infilemode); }
0042
0043 inline void SetOutputPath(const std::string outputpath,
0044 const unsigned int i=0)
0045 { AT(m_outfiles,i).SetPath(outputpath); }
0046 inline void SetOutputFile(const std::string outputfile,
0047 const unsigned int i=0)
0048 { AT(m_outfiles,i).SetFile(outputfile); }
0049 inline void SetOutFileMode(const fom::code outfilemode,
0050 const unsigned int i=0)
0051 { AT(m_outfiles,i).SetMode(outfilemode); }
0052
0053 inline const std::string &InputPath(const unsigned int i=0) const
0054 { return AT(m_infiles,i).Path(); }
0055 inline const std::string &InputFile(const unsigned int i=0) const
0056 { return AT(m_infiles,i).File(); }
0057 inline fom::code InFileMode(const unsigned int i=0) const
0058 { return AT(m_infiles,i).Mode(); }
0059
0060 inline const std::string &OutputPath(const unsigned int i=0) const
0061 { return AT(m_outfiles,i).Path(); }
0062 inline const std::string &OutputFile(const unsigned int i=0) const
0063 { return AT(m_outfiles,i).File(); }
0064 inline fom::code OutFileMode(const unsigned int i=0) const
0065 { return AT(m_outfiles,i).Mode(); }
0066
0067 inline std::ifstream *InputStream(const unsigned int i=0)
0068 { return AT(m_infiles,i)(); }
0069 inline std::ofstream *OutputStream(const unsigned int i=0)
0070 { return AT(m_outfiles,i)(); }
0071
0072 };
0073
0074 }
0075
0076 #endif