LSST Applications g02d81e74bb+86cf3d8bc9,g180d380827+7a4e862ed4,g2079a07aa2+86d27d4dc4,g2305ad1205+e1ca1c66fa,g29320951ab+012e1474a1,g295015adf3+341ea1ce94,g2bbee38e9b+0e5473021a,g337abbeb29+0e5473021a,g33d1c0ed96+0e5473021a,g3a166c0a6a+0e5473021a,g3ddfee87b4+c429d67c83,g48712c4677+f88676dd22,g487adcacf7+27e1e21933,g50ff169b8f+96c6868917,g52b1c1532d+585e252eca,g591dd9f2cf+b41db86c35,g5a732f18d5+53520f316c,g64a986408d+86cf3d8bc9,g858d7b2824+86cf3d8bc9,g8a8a8dda67+585e252eca,g99cad8db69+84912a7fdc,g9ddcbc5298+9a081db1e4,ga1e77700b3+15fc3df1f7,ga8c6da7877+a2b54eae19,gb0e22166c9+60f28cb32d,gba4ed39666+c2a2e4ac27,gbb8dafda3b+6681f309db,gc120e1dc64+f0fcc2f6d8,gc28159a63d+0e5473021a,gcf0d15dbbd+c429d67c83,gdaeeff99f8+f9a426f77a,ge6526c86ff+0433e6603d,ge79ae78c31+0e5473021a,gee10cc3b42+585e252eca,gff1a9f87cc+86cf3d8bc9,w.2024.17
LSST Data Management Base Package
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
ast::StringStream Class Reference

String-based source and sink for channels. More...

#include <Stream.h>

Inheritance diagram for ast::StringStream:
ast::Stream

Public Member Functions

 StringStream (std::string const &data="")
 Construct a StringStream.
 
virtual ~StringStream ()
 
std::string getSourceData () const
 Get a copy of the text from the sink/output stream, without changing the stream.
 
std::string getSinkData () const
 Get a copy of the text from the sink/output stream, without changing the stream.
 
void sinkToSource ()
 Move output/sink data to input/source.
 
bool hasStdStream ()
 Return true if this Stream has an input or output std::stream.
 
char const * source ()
 Source (read) from the stream.
 
bool sink (char const *cstr)
 Sink (write) to the stream.
 
bool getIsFits () const
 get isfits
 

Protected Member Functions

void setIsFits (bool isFits)
 set isFits
 

Protected Attributes

std::shared_ptr< std::istream_istreamPtr
 input stream
 
std::shared_ptr< std::ostream_ostreamPtr
 output stream
 
std::string _sourceStr
 string containing a local copy of sourced data, so source can return a char * that won't disappear right away
 
bool _isFits
 is this a FITS stream?
 

Detailed Description

String-based source and sink for channels.

This sources from one stringstream and sinks to another. The data can be retrieved at any time, without affecting the stream, using getData.

Definition at line 180 of file Stream.h.

Constructor & Destructor Documentation

◆ StringStream()

ast::StringStream::StringStream ( std::string const & data = "")
inlineexplicit

Construct a StringStream.

Parameters
[in]datainitial data for the source stream

Definition at line 187 of file Stream.h.

187 : Stream(), _istringstreamPtr(), _ostringstreamPtr() {
188 _istringstreamPtr = std::make_shared<std::istringstream>(data);
189 _ostringstreamPtr = std::make_shared<std::ostringstream>();
190 _istreamPtr = _istringstreamPtr;
191 _ostreamPtr = _ostringstreamPtr;
192 }
char * data
Definition BaseRecord.cc:61
std::shared_ptr< std::ostream > _ostreamPtr
output stream
Definition Stream.h:132
std::shared_ptr< std::istream > _istreamPtr
input stream
Definition Stream.h:131

◆ ~StringStream()

virtual ast::StringStream::~StringStream ( )
inlinevirtual

Definition at line 194 of file Stream.h.

194{}

Member Function Documentation

◆ getIsFits()

bool ast::Stream::getIsFits ( ) const
inlineinherited

get isfits

Definition at line 125 of file Stream.h.

125{ return _isFits; }
bool _isFits
is this a FITS stream?
Definition Stream.h:136

◆ getSinkData()

std::string ast::StringStream::getSinkData ( ) const
inline

Get a copy of the text from the sink/output stream, without changing the stream.

Definition at line 200 of file Stream.h.

200{ return _ostringstreamPtr->str(); }
T str(T... args)

◆ getSourceData()

std::string ast::StringStream::getSourceData ( ) const
inline

Get a copy of the text from the sink/output stream, without changing the stream.

Definition at line 197 of file Stream.h.

197{ return _istringstreamPtr->str(); }

◆ hasStdStream()

bool ast::Stream::hasStdStream ( )
inlineinherited

Return true if this Stream has an input or output std::stream.

Definition at line 73 of file Stream.h.

73{ return _istreamPtr || _ostreamPtr; }

◆ setIsFits()

void ast::Stream::setIsFits ( bool isFits)
inlineprotectedinherited

set isFits

Definition at line 129 of file Stream.h.

129{ _isFits = isFits; }

◆ sink()

bool ast::Stream::sink ( char const * cstr)
inlineinherited

Sink (write) to the stream.

Parameters
[in]cstrdata to write; a newline is then written if _isFits false
Returns
true on success or if there is no stream pointer (a normal mode), false if the stream pointer is in a bad state after writing
Note
this function is not virtual because of type slicing: this function is called from code that casts a void pointer to a Stream pointer without knowing which kind of Stream it is.

Definition at line 110 of file Stream.h.

110 {
111 if (_ostreamPtr) {
112 (*_ostreamPtr) << cstr;
113 if (!_isFits) {
114 (*_ostreamPtr) << std::endl;
115 }
116 return static_cast<bool>(*_ostreamPtr);
117 } else {
118 return true;
119 }
120 }
T endl(T... args)

◆ sinkToSource()

void ast::StringStream::sinkToSource ( )
inline

Move output/sink data to input/source.

Definition at line 203 of file Stream.h.

203 {
204 _istringstreamPtr->clear();
205 _istringstreamPtr->str(getSinkData());
206 _ostringstreamPtr->str("");
207 }
std::string getSinkData() const
Get a copy of the text from the sink/output stream, without changing the stream.
Definition Stream.h:200
T clear(T... args)

◆ source()

char const * ast::Stream::source ( )
inlineinherited

Source (read) from the stream.

Returns
the data read as a C string, or nullptr if there is no source stream or the source stream is empty or in an error state. The Stream owns the string buffer, and it will be invalidated on the next call to this function.

Definition at line 84 of file Stream.h.

84 {
85 if ((_istreamPtr) && (*_istreamPtr)) {
86 if (_isFits) {
87 // http://codereview.stackexchange.com/a/28759
88 _sourceStr.resize(detail::FITSLEN);
89 _istreamPtr->read(&_sourceStr[0], detail::FITSLEN);
90 } else {
92 }
93 if (*_istreamPtr) {
94 return _sourceStr.c_str();
95 }
96 }
97 return nullptr;
98 }
T c_str(T... args)
std::string _sourceStr
string containing a local copy of sourced data, so source can return a char * that won't disappear ri...
Definition Stream.h:135
T getline(T... args)
T read(T... args)
T resize(T... args)

Member Data Documentation

◆ _isFits

bool ast::Stream::_isFits
protectedinherited

is this a FITS stream?

Definition at line 136 of file Stream.h.

◆ _istreamPtr

std::shared_ptr<std::istream> ast::Stream::_istreamPtr
protectedinherited

input stream

Definition at line 131 of file Stream.h.

◆ _ostreamPtr

std::shared_ptr<std::ostream> ast::Stream::_ostreamPtr
protectedinherited

output stream

Definition at line 132 of file Stream.h.

◆ _sourceStr

std::string ast::Stream::_sourceStr
protectedinherited

string containing a local copy of sourced data, so source can return a char * that won't disappear right away

Definition at line 135 of file Stream.h.


The documentation for this class was generated from the following file: