Paula Script
Loading...
Searching...
No Matches
stream.h
Go to the documentation of this file.
1#pragma once
2#include "defs.h"
3#ifndef PAULA_MINI
4#include <fstream>
5#endif
6
7namespace paula
8{
9 namespace core { class TreeIterator; }
10 class Var;
11
12 // OUTPUT
13
18 {
19 public:
20 virtual void flush() const = 0;
21 virtual void close() const = 0;
22 virtual bool closed() const = 0;
23 };
27 class POut : public IOutputStream
28 {
29 public:
30
31 virtual void flush() const = 0;
32
33 // paula printing interface
34
35 virtual const POut& print(char) const = 0; // eg. std::cout<<c; return *this;
36 virtual const POut& print(const char*) const = 0;
37 virtual const POut& print(long) const = 0;
38 virtual const POut& print(double) const = 0;
39
40 const POut& print(int x) const;
41 const POut& print(float x) const;
42 const POut& print(bool x) const;
43 const POut& printHex(INT i) const;
44 const POut& printCharSymbol(CHAR c) const;
45 const POut& print(const Error* a) const;
46 const POut& println(const char*) const;
47 const POut& endl() const;
48
49 const POut& print(const core::TreeIterator& x) const;
50
51 const POut& print(const Var& x) const;
52
53 // TODO
54 // printIntsToText(x*)
55 };
56
61 {
62 // dummy printer that does nothing.
63 // use to get debug prints optimized away on release.
64 public:
65 void flush() const;
66 const NullPrint& print(const char*) const;
67 const NullPrint& print(double) const; // take care of all numbers and bool
68 const NullPrint& printHex(INT i) const;
69 const NullPrint& printCharSymbol(CHAR c) const;
70 const NullPrint& print(const Error* a) const;
71 const NullPrint& println(const char*) const;
72 const NullPrint& print(const core::TreeIterator& x) const;
73 const NullPrint& print(const Var& x) const;
74 const NullPrint& endl() const;
75 };
79 class STDOut : public POut
80 {
81 public:
82 // Inherited via POut
83 void flush() const override;
84 void close() const override;
85 bool closed() const override;
86 const POut& print(char) const override;
87 const POut& print(const char*) const override;
88 const POut& print(long) const override;
89 const POut& print(double) const override;
90 };
94 class STDErr : public POut
95 {
96 public:
97 // Inherited via POut
98 void flush() const override;
99 void close() const override;
100 bool closed() const override;
101 const POut& print(char) const override;
102 const POut& print(const char*) const override;
103 const POut& print(long) const override;
104 const POut& print(double) const override;
105 };
106
107 // INPUT
108
113 {
114 public:
115 virtual bool read(BYTE&) = 0; // we don't know we're at end before reaching it
116 virtual void close() = 0;
117 };
121 class CharInput : public IInputStream
122 {
123 public:
124 CharInput(const char *);
125 bool read(BYTE&) override;
126 void close() override;
127 private:
128 const char * str;
129 INT i;
130 };
135 {
136 public:
138 // Inherited via IInputStream
139 bool read(BYTE&) override;
140 void close() override;
141 };
142
143#ifndef PAULA_MINI
147 class FileInput : public IInputStream
148 {
149 private:
150 std::ifstream file; // The internal ifstream object
151 FileInput() = delete;
152 public:
153 static bool exists(const std::string& name);
154
155 explicit FileInput(const char *);
157 // Inherited via IInputStream
158 bool read(BYTE&) override;
159 void close() override;
160 const bool found;
161 };
162#endif
163 //template <class CHAR> class Array;
164
165 //class BufferInputStream : public IInputStream
166 //{
167 //public:
168 // BufferInputStream(Array<CHAR>&, INT start, INT last);
169 // CHAR read() override;
170 // bool end() override;
171 // void close() override;
172 //private:
173 // Array<CHAR> str;
174 // INT i, last;
175 //};
176}
Input stream for constant strings.
Definition stream.h:122
CharInput(const char *)
bool read(BYTE &) override
void close() override
Input stream for C++ std ifstream.
Definition stream.h:148
static bool exists(const std::string &name)
FileInput(const char *)
void close() override
const bool found
Definition stream.h:160
bool read(BYTE &) override
Base class for input streams.
Definition stream.h:113
virtual void close()=0
virtual bool read(BYTE &)=0
Base class for output.
Definition stream.h:18
virtual void flush() const =0
virtual void close() const =0
virtual bool closed() const =0
Dummy printer. Use to optimize out debug prints.
Definition stream.h:61
const NullPrint & print(const char *) const
const NullPrint & endl() const
const NullPrint & printCharSymbol(CHAR c) const
const NullPrint & println(const char *) const
const NullPrint & print(double) const
const NullPrint & print(const core::TreeIterator &x) const
const NullPrint & printHex(INT i) const
const NullPrint & print(const Var &x) const
void flush() const
const NullPrint & print(const Error *a) const
Base class for print output.
Definition stream.h:28
virtual const POut & print(long) const =0
const POut & print(const core::TreeIterator &x) const
const POut & print(const Error *a) const
const POut & endl() const
virtual void flush() const =0
const POut & printHex(INT i) const
const POut & println(const char *) const
const POut & print(const Var &x) const
virtual const POut & print(const char *) const =0
const POut & print(int x) const
const POut & print(float x) const
const POut & print(bool x) const
const POut & printCharSymbol(CHAR c) const
virtual const POut & print(double) const =0
virtual const POut & print(char) const =0
Print output using C++ std err.
Definition stream.h:95
const POut & print(long) const override
const POut & print(double) const override
const POut & print(const char *) const override
void flush() const override
const POut & print(char) const override
bool closed() const override
void close() const override
Print output using C++ std cout.
Definition stream.h:80
const POut & print(long) const override
const POut & print(const char *) const override
const POut & print(char) const override
void flush() const override
const POut & print(double) const override
bool closed() const override
void close() const override
Input stream for C++ std input.
Definition stream.h:135
StandardInput()
Definition stream.h:137
void close() override
bool read(BYTE &) override
Access Paula script variable data.
Definition args.h:19
Definition paula.h:7