Jpp  18.5.2
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
JAccessibleStream.hh
Go to the documentation of this file.
1 #ifndef __JLANG__JACCESSIBLESTREAM__
2 #define __JLANG__JACCESSIBLESTREAM__
3 
4 #include <fstream>
5 
6 #include "JLang/JAccessible.hh"
7 #include "JLang/JException.hh"
8 
9 
10 /**
11  * \author mdejong
12  */
13 
14 namespace JLANG {}
15 namespace JPP { using namespace JLANG; }
16 
17 namespace JLANG {
18 
19  /**
20  * Accessible input stream.
21  *
22  * This class is a simple wrapper around the std::ifstream class.
23  * It implements the JAccessible interface.
24  */
26  protected std::ifstream,
27  public virtual JAccessible
28  {
29  public:
30  /**
31  * Default constructor.
32  */
34  {}
35 
36 
37  /**
38  * Constructor.
39  *
40  * \param file_name file name
41  */
42  JAccessibleInputStream(const char* file_name)
43  {
44  open(file_name);
45  }
46 
47 
48  /**
49  * Check is file is open.
50  *
51  * \return true if open; else false
52  */
53  virtual bool is_open() const
54  {
55  return std::ifstream::is_open();
56  }
57 
58 
59  /**
60  * Open file.
61  *
62  * \param file_name file name
63  */
64  virtual void open(const char* file_name)
65  {
66  std::ifstream::open(file_name);
67 
68  if (!this->is_open()) {
69  Throw(JFileOpenException(std::string("Error opening file ") + file_name));
70  }
71  }
72 
73 
74  /**
75  * Close file.
76  */
77  virtual void close()
78  {
80  }
81  };
82 
83 
84  /**
85  * Accessible output stream.
86  *
87  * This class is a simple wrapper around the std::ofstream class.
88  * It class implements the JAccessible interface.
89  */
91  protected std::ofstream,
92  public virtual JAccessible
93  {
94  public:
95  /**
96  * Default constructor.
97  */
99  {}
100 
101 
102  /**
103  * Constructor.
104  *
105  * \param file_name file name
106  */
107  JAccessibleOutputStream(const char* file_name)
108  {
109  open(file_name);
110  }
111 
112 
113  /**
114  * Check is file is open.
115  *
116  * \return true if open; else false
117  */
118  virtual bool is_open() const
119  {
120  return std::ofstream::is_open();
121  }
122 
123 
124  /**
125  * Open file.
126  *
127  * \param file_name file name
128  */
129  virtual void open(const char* file_name)
130  {
131  std::ofstream::open(file_name);
132 
133  if (!this->is_open()) {
134  Throw(JFileOpenException(std::string("Error opening file ") + file_name));
135  }
136  }
137 
138 
139  /**
140  * Close file.
141  */
142  virtual void close()
143  {
145  }
146  };
147 }
148 
149 #endif
Exception for opening of file.
Definition: JException.hh:358
Exceptions.
JAccessibleOutputStream(const char *file_name)
Constructor.
virtual bool is_open() const
Check is file is open.
virtual void open(const char *file_name)
Open file.
Accessible output stream.
virtual void close()
Close file.
JAccessibleInputStream()
Default constructor.
T * open(const std::string &file_name)
Open file.
Definition: JeepToolkit.hh:346
void close(std::istream *pf)
Close file.
Definition: JeepToolkit.hh:386
virtual void open(const char *file_name)
Open file.
JAccessibleOutputStream()
Default constructor.
then awk string
virtual bool is_open() const
Check is file is open.
Accessible input stream.
JAccessibleInputStream(const char *file_name)
Constructor.
virtual void close()
Close file.
Interface for named access of a device.
Definition: JAccessible.hh:20
static void Throw(const bool option)
Enable/disable throw option.
Definition: JThrow.hh:37