Commit 68743f00d62f57d4acbeb39e32a04d2d9132c30c
1 parent
f2b6e6f0
Exists in
master
and in
3 other branches
Planejando versão C++
Showing
1 changed file
with
92 additions
and
2 deletions
Show diff stats
src/include/lib3270++.h
@@ -33,6 +33,7 @@ | @@ -33,6 +33,7 @@ | ||
33 | 33 | ||
34 | #define LIB3270_HPP_INCLUDED 1 | 34 | #define LIB3270_HPP_INCLUDED 1 |
35 | 35 | ||
36 | + #include <iostream> | ||
36 | #include <lib3270.h> | 37 | #include <lib3270.h> |
37 | 38 | ||
38 | #if defined(_WIN32) | 39 | #if defined(_WIN32) |
@@ -62,6 +63,8 @@ | @@ -62,6 +63,8 @@ | ||
62 | 63 | ||
63 | namespace TN3270 { | 64 | namespace TN3270 { |
64 | 65 | ||
66 | + class Host; | ||
67 | + | ||
65 | enum ProgramMessage : uint8_t { | 68 | enum ProgramMessage : uint8_t { |
66 | MESSAGE_NONE = LIB3270_MESSAGE_NONE, ///< @brief No message | 69 | MESSAGE_NONE = LIB3270_MESSAGE_NONE, ///< @brief No message |
67 | MESSAGE_SYSWAIT = LIB3270_MESSAGE_SYSWAIT, ///< @brief -- | 70 | MESSAGE_SYSWAIT = LIB3270_MESSAGE_SYSWAIT, ///< @brief -- |
@@ -138,7 +141,7 @@ | @@ -138,7 +141,7 @@ | ||
138 | 141 | ||
139 | // Connect/disconnect | 142 | // Connect/disconnect |
140 | virtual void connect(const char *url) = 0; | 143 | virtual void connect(const char *url) = 0; |
141 | - virtual void disconnect(const char *url); | 144 | + virtual void disconnect(); |
142 | 145 | ||
143 | // Gets | 146 | // Gets |
144 | virtual std::string toString(int baddr = 0, size_t len = -1, bool lf = false) = 0; | 147 | virtual std::string toString(int baddr = 0, size_t len = -1, bool lf = false) = 0; |
@@ -169,7 +172,7 @@ | @@ -169,7 +172,7 @@ | ||
169 | return push(text.c_str()); | 172 | return push(text.c_str()); |
170 | } | 173 | } |
171 | 174 | ||
172 | - virtual Session & push(int baddr = 0, const std::string &text) = 0; | 175 | + virtual Session & push(int baddr, const std::string &text) = 0; |
173 | virtual Session & push(int row, int col, const std::string &text) = 0; | 176 | virtual Session & push(int row, int col, const std::string &text) = 0; |
174 | virtual Session & push(const PFKey key) = 0; | 177 | virtual Session & push(const PFKey key) = 0; |
175 | virtual Session & push(const PAKey key) = 0; | 178 | virtual Session & push(const PAKey key) = 0; |
@@ -177,6 +180,83 @@ | @@ -177,6 +180,83 @@ | ||
177 | 180 | ||
178 | }; | 181 | }; |
179 | 182 | ||
183 | + /// @brief TN3270 Host | ||
184 | + class TN3270_PUBLIC Host : public std::basic_streambuf<char, std::char_traits<char> > { | ||
185 | + private: | ||
186 | + | ||
187 | + /// @brief Connection with the host | ||
188 | + Session *session; | ||
189 | + | ||
190 | + protected: | ||
191 | + | ||
192 | + /// @brief Writes characters to the associated file from the put area | ||
193 | + int sync() override; | ||
194 | + | ||
195 | + /// @brief Writes characters to the associated output sequence from the put area. | ||
196 | + int overflow(int c) override; | ||
197 | + | ||
198 | + public: | ||
199 | + Host(const char *id = nullptr, const char *url = nullptr); | ||
200 | + ~Host(); | ||
201 | + | ||
202 | + inline ProgramMessage getProgramMessage() const { | ||
203 | + return session->getProgramMessage(); | ||
204 | + } | ||
205 | + | ||
206 | + inline operator ProgramMessage() const { | ||
207 | + return getProgramMessage(); | ||
208 | + } | ||
209 | + | ||
210 | + inline ConnectionState getConnectionState() const { | ||
211 | + return session->getConnectionState(); | ||
212 | + } | ||
213 | + | ||
214 | + inline operator ConnectionState() const { | ||
215 | + return getConnectionState(); | ||
216 | + } | ||
217 | + | ||
218 | + | ||
219 | + // Sets | ||
220 | + | ||
221 | + /// @brief Set field at current posicion, jumps to next writable field. | ||
222 | + inline Host & push(const char *text) { | ||
223 | + session->push(text); | ||
224 | + return *this; | ||
225 | + }; | ||
226 | + | ||
227 | + inline Host & push(const std::string &text) { | ||
228 | + session->push(text)); | ||
229 | + return *this; | ||
230 | + | ||
231 | + } | ||
232 | + | ||
233 | + inline Host & push(int baddr, const std::string &text) { | ||
234 | + session->push(baddr,text); | ||
235 | + return *this; | ||
236 | + } | ||
237 | + | ||
238 | + inline Host & push(int row, int col, const std::string &text) { | ||
239 | + session->push(row,col,text); | ||
240 | + return *this; | ||
241 | + } | ||
242 | + | ||
243 | + inline Host & push(const PFKey key) { | ||
244 | + session->push(key); | ||
245 | + return *this; | ||
246 | + } | ||
247 | + | ||
248 | + inline Host & push(const PAKey key) { | ||
249 | + session->push(key); | ||
250 | + return *this; | ||
251 | + } | ||
252 | + | ||
253 | + inline Host & push(const Action action) { | ||
254 | + session->push(action); | ||
255 | + return *this; | ||
256 | + } | ||
257 | + | ||
258 | + }; | ||
259 | + | ||
180 | } | 260 | } |
181 | 261 | ||
182 | TN3270_PUBLIC const char * toCharString(const TN3270::ProgramMessage programMessage) noexcept; | 262 | TN3270_PUBLIC const char * toCharString(const TN3270::ProgramMessage programMessage) noexcept; |
@@ -192,6 +272,16 @@ | @@ -192,6 +272,16 @@ | ||
192 | return session.pop(value); | 272 | return session.pop(value); |
193 | } | 273 | } |
194 | 274 | ||
275 | + template <typename T> | ||
276 | + inline TN3270_PUBLIC TN3270::Host & operator<<(TN3270::Host& host, const T value) { | ||
277 | + return host.push(value); | ||
278 | + } | ||
279 | + | ||
280 | + template <typename T> | ||
281 | + inline TN3270_PUBLIC TN3270::Host & operator>>(TN3270::Host& host, const T value) { | ||
282 | + return Host.pop(value); | ||
283 | + } | ||
284 | + | ||
195 | #endif | 285 | #endif |
196 | 286 | ||
197 | #endif // LIB3270_H_INCLUDED | 287 | #endif // LIB3270_H_INCLUDED |