lsst.astshim
gf5dcc679e7+7aca86229d
Toggle main menu visibility
Loading...
Searching...
No Matches
src
Channel.cc
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
23
#include "
astshim/base.h
"
24
#include "
astshim/KeyMap.h
"
25
#include "
astshim/Object.h
"
26
#include "
astshim/Stream.h
"
27
#include "
astshim/Channel.h
"
28
29
namespace
ast
{
30
31
Channel::Channel
(
Stream
&stream,
std::string
const
&options)
32
:
Channel
(astChannel(
detail
::source,
detail
::sink,
"%s"
, options.c_str()), stream) {
33
assertOK
();
34
}
35
36
Channel::Channel
(AstChannel *chan,
Stream
&stream,
bool
isFits)
37
:
Object
(reinterpret_cast<AstObject *>(chan)), _stream(stream) {
38
astPutChannelData(
getRawPtr
(), &_stream);
39
_stream.setIsFits(isFits);
40
assertOK
();
41
}
42
43
Channel::Channel
(AstChannel *chan) :
Object
(reinterpret_cast<AstObject *>(chan)), _stream() {
assertOK
(); }
44
45
Channel::~Channel
() {
46
if
(_stream.hasStdStream()) {
47
// avoid any attempt to read or write while the stream is being destroyed
48
astPutChannelData(
getRawPtr
(),
nullptr
);
49
}
50
}
51
52
std::shared_ptr<Object>
Channel::read
() {
53
AstObject *rawRet =
reinterpret_cast<
AstObject *
>
(astRead(
getRawPtr
()));
54
assertOK
(rawRet);
55
if
(!rawRet) {
56
throw
std::runtime_error
(
"Could not read an AST object from this channel"
);
57
}
58
return
Object::fromAstObject<Object>
(rawRet,
false
);
59
}
60
61
int
Channel::write
(
Object
const
&
object
) {
62
int
ret = astWrite(
getRawPtr
(),
object
.
getRawPtr
());
63
assertOK
();
64
return
ret;
65
}
66
67
KeyMap
Channel::warnings
()
const
{
68
AstKeyMap *rawKeyMap =
69
reinterpret_cast<
AstKeyMap *
>
(astWarnings(
reinterpret_cast<
AstChannel
const
*
>
(
getRawPtr
())));
70
assertOK
();
71
return
rawKeyMap ?
KeyMap
(rawKeyMap) :
KeyMap
();
72
}
73
74
}
// namespace ast
Channel.h
KeyMap.h
Object.h
Stream.h
base.h
std::string
ast::Channel::~Channel
virtual ~Channel()
Definition
Channel.cc:45
ast::Channel::Object
friend class Object
Definition
Channel.h:61
ast::Channel::warnings
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
ast::Channel::Channel
Channel(Stream &stream, std::string const &options="")
Construct a channel that uses a provided Stream.
Definition
Channel.cc:31
ast::Channel::read
std::shared_ptr< Object > read()
Read an object from a channel.
Definition
Channel.cc:52
ast::Channel::write
int write(Object const &object)
Write an object to a channel.
Definition
Channel.cc:61
ast::KeyMap
KeyMap is used to store a set of values with associated keys which identify the values.
Definition
KeyMap.h:83
ast::Object::fromAstObject
static std::shared_ptr< Class > fromAstObject(AstObject *rawObj, bool copy)
Given a bare AST object pointer return a shared pointer to an ast::Object of the correct type.
Definition
Object.cc:140
ast::Object::getRawPtr
AstObject const * getRawPtr() const
Get the raw AST pointer.
Definition
Object.h:292
ast::Stream
A stream for ast::Channel.
Definition
Stream.h:41
ast::detail
Definition
polyMapUtils.h:30
ast
AST wrapper classes and functions.
Definition
attributes_channel.dox:1
ast::assertOK
void assertOK(AstObject *rawPtr1=nullptr, AstObject *rawPtr2=nullptr)
Throw std::runtime_error if AST's state is bad.
Definition
base.cc:49
std::runtime_error
std::shared_ptr
Generated on
for lsst.astshim by
1.17.0