00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef _PARMPARSE_IO_H_
00029 #define _PARMPARSE_IO_H_
00030 #include <iostream>
00031 #include <fstream>
00032 using std::ofstream;
00033 #include <string>
00034
00035 #include "REAL.H"
00036 class Box;
00037 class IntVect;
00038 class FArrayBox;
00039 class BoxLayout;
00040 class DisjointBoxLayout;
00041 template <class TTYPE> class LevelData;
00042
00043 class ParmParse;
00044
00045 class ParmParseIO
00046 {
00047 public:
00048 ParmParseIO ();
00049 ~ParmParseIO ();
00050
00051 void
00052 openForRead (const std::string& a_filename);
00053
00054 void
00055 openForWrite (const std::string& a_filename);
00056
00057 void
00058 close ();
00059
00060 void
00061 setGroup (const std::string& a_groupname);
00062
00063 const std::string
00064 getGroup () const;
00065
00066 const std::string&
00067 filename() const;
00068
00069 const std::string&
00070 groupname() const;
00071
00072 void set (const std::string& a_name, const Real& a_value);
00073 void set (const std::string& a_name, const int& a_value);
00074 void set (const std::string& a_name, const std::string& a_value);
00075 void set (const std::string& a_name, const IntVect& a_value);
00076 void set (const std::string& a_name, const Box& a_value);
00077
00078 void get (const std::string& a_name, Real& a_value) const;
00079 void get (const std::string& a_name, int& a_value) const;
00080 void get (const std::string& a_name, std::string& a_value) const;
00081 void get (const std::string& a_name, IntVect& a_value) const;
00082 void get (const std::string& a_name, Box& a_value) const;
00083
00084 bool
00085 found (const std::string& a_name) const;
00086
00087 friend
00088 void
00089 write (ParmParseIO& a_ppio, const BoxLayout& a_layout);
00090
00091
00092
00093
00094
00095 friend
00096 int
00097 read (ParmParseIO& a_ppio, Vector<Box>& a_boxes);
00098
00099
00100
00101
00102
00103
00104 protected:
00105 ParmParse* m_parmparse_ptr;
00106 ofstream m_ostrm;
00107 std::string m_groupname;
00108 std::string m_filename;
00109 };
00110
00111
00112 void
00113 write (ParmParseIO& a_ppio,
00114 const LevelData<FArrayBox>& a_data,
00115 const std::string& a_name);
00116
00117 int
00118 read (ParmParseIO& a_ppio,
00119 LevelData<FArrayBox>& a_data,
00120 const std::string& a_name,
00121 const DisjointBoxLayout& a_layout);
00122
00123
00124
00125 #endif