LSST Applications g180d380827+0f66a164bb,g2079a07aa2+86d27d4dc4,g2305ad1205+7d304bc7a0,g29320951ab+500695df56,g2bbee38e9b+0e5473021a,g337abbeb29+0e5473021a,g33d1c0ed96+0e5473021a,g3a166c0a6a+0e5473021a,g3ddfee87b4+e42ea45bea,g48712c4677+36a86eeaa5,g487adcacf7+2dd8f347ac,g50ff169b8f+96c6868917,g52b1c1532d+585e252eca,g591dd9f2cf+c70619cc9d,g5a732f18d5+53520f316c,g5ea96fc03c+341ea1ce94,g64a986408d+f7cd9c7162,g858d7b2824+f7cd9c7162,g8a8a8dda67+585e252eca,g99cad8db69+469ab8c039,g9ddcbc5298+9a081db1e4,ga1e77700b3+15fc3df1f7,gb0e22166c9+60f28cb32d,gba4ed39666+c2a2e4ac27,gbb8dafda3b+c92fc63c7e,gbd866b1f37+f7cd9c7162,gc120e1dc64+02c66aa596,gc28159a63d+0e5473021a,gc3e9b769f7+b0068a2d9f,gcf0d15dbbd+e42ea45bea,gdaeeff99f8+f9a426f77a,ge6526c86ff+84383d05b3,ge79ae78c31+0e5473021a,gee10cc3b42+585e252eca,gff1a9f87cc+f7cd9c7162,w.2024.17
LSST Data Management Base Package
Loading...
Searching...
No Matches
Channel.h
Go to the documentation of this file.
1/*
2 * LSST Data Management System
3 * Copyright 2017 AURA/LSST.
4 *
5 * This product includes software developed by the
6 * LSST Project (http://www.lsst.org/).
7 *
8 * This program is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation, either version 3 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the LSST License Statement and
19 * the GNU General Public License along with this program. If not,
20 * see <https://www.lsstcorp.org/LegalNotices/>.
21 */
22#ifndef ASTSHIM_CHANNEL_H
23#define ASTSHIM_CHANNEL_H
24
25#include <memory>
26#include <ostream>
27
28#include "astshim/base.h"
29#include "astshim/Object.h"
30#include "astshim/Stream.h"
31
32namespace ast {
33
34class KeyMap;
35
60class Channel : public Object {
61 friend class Object;
62
63public:
74 explicit Channel(Stream &stream, std::string const &options = "");
75
76 virtual ~Channel();
77
78 Channel(Channel const &) = delete;
79 Channel(Channel &&) = default;
80 Channel &operator=(Channel const &) = delete;
81 Channel &operator=(Channel &&) = default;
82
85 throw std::logic_error(
86 "Channel cannot be deep copied because its contained stream cannot be deep copied");
87 }
88
90 bool getComment() const { return getB("Comment"); }
91
93 int getFull() const { return getI("Full"); }
94
96 int getIndent() const { return getB("Indent"); }
97
99 int getReportLevel() const { return getI("ReportLevel"); }
100
102 bool getSkip() const { return getB("Skip"); }
103
105 bool getStrict() const { return getB("Strict"); }
106
109
111 void setComment(bool skip) { setB("Comment", skip); }
112
114 void setFull(int full) { setI("Full", full); }
115
117 void setIndent(int indent) { setI("Indent", indent); }
118
125 void setReportLevel(int level) {
126 if ((level < 0) || (level > 3)) {
128 os << "level = " << level << " not in range [0, 3]";
129 throw std::invalid_argument(os.str());
130 }
131 setI("ReportLevel", level);
132 }
133
135 void setSkip(bool skip) { setB("Skip", skip); }
136
138 void setStrict(bool strict) { setB("Strict", strict); }
139
153 KeyMap warnings() const;
154
156 int write(Object const &object);
157
158protected:
160
170 explicit Channel(AstChannel *chan, Stream &stream, bool isFits=false);
171
177 explicit Channel(AstChannel *chan);
178
179private:
180 Stream _stream;
181};
182
183} // namespace ast
184
185#endif
std::ostream * os
Definition Schema.cc:557
Channel provides input/output of AST objects.
Definition Channel.h:60
virtual ~Channel()
Definition Channel.cc:45
void setIndent(int indent)
Set Indent: indentation increment between objects.
Definition Channel.h:117
bool getStrict() const
Get Strict: generate errors instead of warnings?
Definition Channel.h:105
Channel & operator=(Channel const &)=delete
int getFull() const
Get Full: level of output detail; one of -1: minimum, 0: normal, 1: verbose.
Definition Channel.h:93
Channel & operator=(Channel &&)=default
void setComment(bool skip)
Set Comment: include textual comments in output?
Definition Channel.h:111
Channel(Channel &&)=default
KeyMap warnings() const
Return a KeyMap holding the text of any warnings issued as a result of the previous invocation of rea...
Definition Channel.cc:67
int getReportLevel() const
Get ReportLevel: report level.
Definition Channel.h:99
Channel(Stream &stream, std::string const &options="")
Construct a channel that uses a provided Stream.
Definition Channel.cc:31
void setStrict(bool strict)
Set Strict: generate errors instead of warnings?
Definition Channel.h:138
virtual std::shared_ptr< Object > copyPolymorphic() const override
Return a deep copy of this object.
Definition Channel.h:159
Channel(Channel const &)=delete
bool getComment() const
Get Comment: include textual comments in output?
Definition Channel.h:90
void setReportLevel(int level)
Set ReportLevel: report level; an integer in the range [0, 3] where 0 is the most verbose.
Definition Channel.h:125
void setSkip(bool skip)
Set Skip: skip irrelevant data on input?
Definition Channel.h:135
std::shared_ptr< Channel > copy() const
Return a deep copy of this object.
Definition Channel.h:84
bool getSkip() const
Get Skip: skip irrelevant data on input?
Definition Channel.h:102
int getIndent() const
Get Indent: indentation increment between objects.
Definition Channel.h:96
std::shared_ptr< Object > read()
Read an object from a channel.
Definition Channel.cc:52
int write(Object const &object)
Write an object to a channel.
Definition Channel.cc:61
void setFull(int full)
Set Full: level of output detail; one of -1: minimum, 0: normal, 1: verbose.
Definition Channel.h:114
KeyMap is used to store a set of values with associated keys which identify the values.
Definition KeyMap.h:83
Abstract base class for all AST objects.
Definition Object.h:51
void setI(std::string const &attrib, int value)
Set the value of an attribute as an int.
Definition Object.h:496
bool getB(std::string const &attrib) const
Get the value of an attribute as a bool.
Definition Object.h:348
int getI(std::string const &attrib) const
Get the value of an attribute as an int.
Definition Object.cc:178
void setB(std::string const &attrib, bool value)
Set the value of an attribute as a bool.
Definition Object.h:448
A stream for ast::Channel.
Definition Stream.h:41
AST wrapper classes and functions.