libzypp  17.8.0
zypp::InputStream Class Reference

Helper to create and pass std::istream. More...

#include <InputStream.h>

Public Member Functions

 InputStream ()
 Default ctor providing std::cin. More...
 
 InputStream (std::istream &stream_r, const std::string &name_r=std::string())
 Ctor providing an aleady existig std::istream. More...
 
 InputStream (const Pathname &file_r)
 Ctor for reading a (gziped) file. More...
 
 InputStream (const Pathname &file_r, const std::string &name_r)
 Ctor for reading a (gziped) file. More...
 
 InputStream (const std::string &file_r)
 Ctor for reading a (gziped) file. More...
 
 InputStream (const std::string &file_r, const std::string &name_r)
 Ctor for reading a (gziped) file. More...
 
 InputStream (const char *file_r)
 Ctor for reading a (gziped) file. More...
 
 InputStream (const char *file_r, const std::string &name_r)
 Ctor for reading a (gziped) file. More...
 
 ~InputStream ()
 Dtor. More...
 
std::istream & stream () const
 The std::istream. More...
 
 operator std::istream & () const
 Allow implicit conversion to std::istream. More...
 
const std::string & name () const
 Name of the std::istream. More...
 
const Pathnamepath () const
 Path to the input file or empty if no file. More...
 
std::streamoff size () const
 Size of the input stream (informal). More...
 
void setSize (std::streamoff val_r)
 Set the size of the input stream. More...
 

Private Attributes

Pathname _path
 
shared_ptr< std::istream > _stream
 
std::string _name
 
DefaultIntegral< std::streamoff,-1 > _size
 

Related Functions

(Note that these are not member functions.)

std::ostream & operator<< (std::ostream &str, const InputStream &obj)
 

Detailed Description

Helper to create and pass std::istream.

The provided std::istream may either be std::cin, sone (gziped) file or an aleady existig std::istream.

An optional name arument may be passed to the ctor, to identify the stream in log messages, even if it is not a file.

Per default the name is "STDIN", the path to an input file or empty.

void parse( const InputStream & input = InputStream() )
{
// process input.stream() and refer to input.name()
// in log messages.
}
parse(); // std::cin
parse( "/some/file" ); // file
parse( "/some/file.gz" ); // gziped file
std::istream & mystream;
parse( mystream ); // some existing stream
parse( InputStream( mystream,
"my stream's name" ) );

Definition at line 56 of file InputStream.h.

Constructor & Destructor Documentation

◆ InputStream() [1/8]

zypp::InputStream::InputStream ( )

Default ctor providing std::cin.

Definition at line 47 of file InputStream.cc.

◆ InputStream() [2/8]

zypp::InputStream::InputStream ( std::istream &  stream_r,
const std::string &  name_r = std::string() 
)

Ctor providing an aleady existig std::istream.

Definition at line 57 of file InputStream.cc.

◆ InputStream() [3/8]

zypp::InputStream::InputStream ( const Pathname file_r)

Ctor for reading a (gziped) file.

Definition at line 68 of file InputStream.cc.

◆ InputStream() [4/8]

zypp::InputStream::InputStream ( const Pathname file_r,
const std::string &  name_r 
)

Ctor for reading a (gziped) file.

Definition at line 80 of file InputStream.cc.

◆ InputStream() [5/8]

zypp::InputStream::InputStream ( const std::string &  file_r)

Ctor for reading a (gziped) file.

Definition at line 93 of file InputStream.cc.

◆ InputStream() [6/8]

zypp::InputStream::InputStream ( const std::string &  file_r,
const std::string &  name_r 
)

Ctor for reading a (gziped) file.

Definition at line 105 of file InputStream.cc.

◆ InputStream() [7/8]

zypp::InputStream::InputStream ( const char *  file_r)

Ctor for reading a (gziped) file.

Definition at line 118 of file InputStream.cc.

◆ InputStream() [8/8]

zypp::InputStream::InputStream ( const char *  file_r,
const std::string &  name_r 
)

Ctor for reading a (gziped) file.

Definition at line 130 of file InputStream.cc.

◆ ~InputStream()

zypp::InputStream::~InputStream ( )

Dtor.

Definition at line 143 of file InputStream.cc.

Member Function Documentation

◆ stream()

std::istream& zypp::InputStream::stream ( ) const
inline

The std::istream.

Note
The provided std::istream is never const.

Definition at line 93 of file InputStream.h.

◆ operator std::istream &()

zypp::InputStream::operator std::istream & ( ) const
inline

Allow implicit conversion to std::istream.

Definition at line 97 of file InputStream.h.

◆ name()

const std::string& zypp::InputStream::name ( ) const
inline

Name of the std::istream.

Per default this is "STDIN", the path to an input file or empty. A custom string may be provided to the ctor.

This may be used in log messages to identify the stream even even if it is not a file.

Definition at line 107 of file InputStream.h.

◆ path()

const Pathname& zypp::InputStream::path ( ) const
inline

Path to the input file or empty if no file.

Definition at line 111 of file InputStream.h.

◆ size()

std::streamoff zypp::InputStream::size ( ) const
inline

Size of the input stream (informal).

If constructed from an uncompressed file, the file size. Otherwise -1. See setSize;

Definition at line 118 of file InputStream.h.

◆ setSize()

void zypp::InputStream::setSize ( std::streamoff  val_r)
inline

Set the size of the input stream.

You may set it to whatever vaule is appropriate. E.g. *=10 to compensate gzip comression. or the number of items, lines, ... The value is not used here, just provided.

Definition at line 127 of file InputStream.h.

Friends And Related Function Documentation

◆ operator<<()

std::ostream & operator<< ( std::ostream &  str,
const InputStream obj 
)
related

Stream output

Definition at line 151 of file InputStream.cc.

Member Data Documentation

◆ _path

Pathname zypp::InputStream::_path
private

Definition at line 131 of file InputStream.h.

◆ _stream

shared_ptr<std::istream> zypp::InputStream::_stream
private

Definition at line 132 of file InputStream.h.

◆ _name

std::string zypp::InputStream::_name
private

Definition at line 133 of file InputStream.h.

◆ _size

DefaultIntegral<std::streamoff,-1> zypp::InputStream::_size
private

Definition at line 134 of file InputStream.h.


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