Back to home page

EIC code displayed by LXR

 
 

    


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     // constructor
0026     File_IO_Base(const unsigned int inputfiles=1,
0027          const unsigned int outputfiles=1);
0028 
0029     // destructor
0030     virtual ~File_IO_Base();
0031 
0032     // inline functions
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   }; // end of class File_IO_Base
0073 
0074 } // end of namespace ATOOLS
0075 
0076 #endif