nlib
nn::nlib::Base64InputStream Class Referencefinal

The class for reading Base64-encoded data. More...

#include "nn/nlib/Base64InputStream.h"

+ Inheritance diagram for nn::nlib::Base64InputStream:

Public Member Functions

Constructor, Destructor, and Initialization
constexpr Base64InputStream () noexcept
 Instantiates the object with default parameters (default constructor).
 
errno_t Init (CharOption char_option) noexcept
 Initializes the object. For information on the arguments, see Base64Decoder::CharOption.
 
errno_t Init () noexcept
 Runs Init(Base64Decoder::kBase64Default).
 
virtual ~Base64InputStream () noexcept override
 Destructor.
 
- Public Member Functions inherited from nn::nlib::InputConverterStream
errno_t SetStream (InputStream *istr) noexcept
 Sets the input stream for reading the pre-converted data. More...
 
InputStreamGetStream () const noexcept
 Gets the input stream for reading the pre-converted data. More...
 
- Public Member Functions inherited from nn::nlib::InputStream
errno_t GetErrorValue () const noexcept
 Gets the error value. More...
 
size_t Pos () const noexcept
 Returns the current position in the stream. More...
 
uint64_t Pos64 () const noexcept
 Returns the current position in the stream as a 64-bit value. More...
 
bool IsEos () noexcept
 Returns true if the stream is finished being read through to the end. If the stream has not been read through to the end, or if an error occurs, the function returns false. More...
 
int Read () noexcept
 Reads one byte of data from the stream. More...
 
int Peek () noexcept
 Reads the next byte without consuming the stream. More...
 
size_t Skip (size_t nbytes) noexcept
 Skips over the number of bytes specified by nbytes. More...
 
size_t Read (void *ptr, size_t nbytes) noexcept
 Reads the number of bytes of data specified by nbytes into the memory region specified by ptr. More...
 
template<size_t N>
size_t Read (nlib_byte_t(&buf)[N]) noexcept
 A template overload of the above function.
 
bool Close () noexcept
 Closes the stream. Returns true if successful. More...
 
bool Mark (size_t readlimit) noexcept
 This function provides settings that allow you to return to the current load position using GoBackToMark(). More...
 
bool GoBackToMark () noexcept
 This function allows you to return to the load position that the last Mark() has been executed at. More...
 
bool IsMarkSupported () const noexcept
 This function returns true if this stream supports Mark() and GoBackToMark().
 
 operator bool () const
 Returns true if the object has been initialized and an error has not occurred inside, or returns false if an error has occurred inside.
 
constexpr InputStream () noexcept
 Instantiates the object with default parameters (default constructor). This function is called from the derived class.
 
virtual ~InputStream () noexcept
 Destructor. This function is called from the derived class.
 

Additional Inherited Members

- Protected Member Functions inherited from nn::nlib::InputStream
void SetBuffer (void *p, size_t nbytes, bool is_mark_supported, bool is_buf_readonly) noexcept
 Sets the buffer held by InputStream. More...
 
void SetError (errno_t e) const noexcept
 Sets an error to InputStream. More...
 

Detailed Description

The class for reading Base64-encoded data.

Description
InputConverterStream is held in the base class. When operating as InputStream, the read data is Base64-decoded and returned. The InputConverterStream::SetStream function sets a stream for reading Base64 strings, and then the stream is used.
If characters that have not been converted are read, the following behaviors take place.
  • If the characters are the CR, LF, space, or horizontal tab, they are skipped.
  • Other characters generate an error (EILSEQ).
The EILSEQ error is also generated if there are not enough '=' padding characters.
Sample code is provided below.
const char* base64 = "RGF0YSB0byBlbmNvZGUgc3RlcDEKRGF0YSB0byBlbmNvZGUgc3RlcDIK";
errno_t e = base64_stream.Init();
SUCCEED_IF(e == 0);
e = base64_stream.SetStream(&is);
SUCCEED_IF(e == 0);
char buf[128];
size_t nread = base64_stream.Read(buf, 128);
SUCCEED_IF(nread > 0);
buf[nread] = '\0'; // nread not checked for simplicity
(void)base64_stream.Close();
(void)is.Close();
nlib_printf("converted:\n%s", buf);
/*
Output:
Data to encode step1
Data to encode step2
*/
See also
https://www.ietf.org/rfc/rfc2045.txt (RFC2045, Base64)
The transition of the object state.
The overview of the object state transitions is described below:
dot_inline_dotgraph_3.png

Definition at line 24 of file Base64InputStream.h.


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