Commit | Line | Data |
---|---|---|
7b49793d | 1 | /* |
38d375e7 AW |
2 | This file is part of Smoothie (http://smoothieware.org/). The motion control part is heavily based on Grbl (https://github.com/simen/grbl). |
3 | Smoothie is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. | |
4 | Smoothie is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. | |
7b49793d | 5 | You should have received a copy of the GNU General Public License along with Smoothie. If not, see <http://www.gnu.org/licenses/>. |
38d375e7 AW |
6 | */ |
7 | ||
8 | #ifndef STREAMOUTPUTPOOL_H | |
9 | #define STREAMOUTPUTPOOL_H | |
10 | ||
11 | using namespace std; | |
67755081 | 12 | #include <set> |
38d375e7 AW |
13 | #include <string> |
14 | #include <cstdio> | |
15 | #include <cstdarg> | |
16 | ||
17 | #include "libs/StreamOutput.h" | |
18 | ||
836222e7 | 19 | class StreamOutputPool : public StreamOutput { |
d4ee6ee2 | 20 | |
ac55e8e7 MM |
21 | public: |
22 | StreamOutputPool(){ | |
ac55e8e7 | 23 | } |
ac55e8e7 | 24 | |
836222e7 MM |
25 | int puts(const char* s) |
26 | { | |
27 | int r = 0; | |
67755081 MM |
28 | for(set<StreamOutput*>::iterator i = this->streams.begin(); i != this->streams.end(); i++) |
29 | { | |
836222e7 MM |
30 | int k = (*i)->puts(s); |
31 | if (k > r) | |
32 | r = k; | |
ac55e8e7 | 33 | } |
836222e7 | 34 | return r; |
ac55e8e7 | 35 | } |
38d375e7 | 36 | |
67755081 MM |
37 | void append_stream(StreamOutput* stream) |
38 | { | |
39 | this->streams.insert(stream); | |
ac55e8e7 | 40 | } |
38d375e7 | 41 | |
67755081 MM |
42 | void remove_stream(StreamOutput* stream) |
43 | { | |
44 | this->streams.erase(stream); | |
45 | } | |
46 | ||
d4ee6ee2 | 47 | private: |
67755081 | 48 | set<StreamOutput*> streams; |
ac55e8e7 | 49 | }; |
38d375e7 AW |
50 | |
51 | #endif |