Electroneum
AutoUTFOutputStream< CharType, OutputByteStream > Class Template Reference

Output stream wrapper with dynamically bound encoding and automatic encoding detection. More...

#include <encodedstream.h>

Public Types

typedef CharType Ch
 

Public Member Functions

 AutoUTFOutputStream (OutputByteStream &os, UTFType type, bool putBOM)
 Constructor. More...
 
UTFType GetType () const
 
void Put (Ch c)
 
void Flush ()
 
Ch Peek () const
 
Ch Take ()
 
size_t Tell () const
 
ChPutBegin ()
 
size_t PutEnd (Ch *)
 

Detailed Description

template<typename CharType, typename OutputByteStream>
class AutoUTFOutputStream< CharType, OutputByteStream >

Output stream wrapper with dynamically bound encoding and automatic encoding detection.

Template Parameters
CharTypeType of character for writing.
OutputByteStreamtype of output byte stream to be wrapped.

Definition at line 233 of file encodedstream.h.

Member Typedef Documentation

◆ Ch

template<typename CharType, typename OutputByteStream>
typedef CharType AutoUTFOutputStream< CharType, OutputByteStream >::Ch

Definition at line 236 of file encodedstream.h.

Constructor & Destructor Documentation

◆ AutoUTFOutputStream()

template<typename CharType, typename OutputByteStream>
AutoUTFOutputStream< CharType, OutputByteStream >::AutoUTFOutputStream ( OutputByteStream &  os,
UTFType  type,
bool  putBOM 
)
inline

Constructor.

Parameters
osoutput stream to be wrapped.
typeUTF encoding type.
putBOMWhether to write BOM at the beginning of the stream.

Definition at line 244 of file encodedstream.h.

244  : os_(&os), type_(type) {
245  RAPIDJSON_ASSERT(type >= kUTF8 && type <= kUTF32BE);
246 
247  // Runtime check whether the size of character type is sufficient. It only perform checks with assertion.
248  if (type_ == kUTF16LE || type_ == kUTF16BE) RAPIDJSON_ASSERT(sizeof(Ch) >= 2);
249  if (type_ == kUTF32LE || type_ == kUTF32BE) RAPIDJSON_ASSERT(sizeof(Ch) >= 4);
250 
251  static const PutFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(Put) };
252  putFunc_ = f[type_];
253 
254  if (putBOM)
255  PutBOM();
256  }
#define RAPIDJSON_ENCODINGS_FUNC(x)
UTF-32 big endian.
Definition: encodings.h:608
UTF-16 little endian.
Definition: encodings.h:605
UTF-8.
Definition: encodings.h:604
UTF-16 big endian.
Definition: encodings.h:606
UTF-32 little endian.
Definition: encodings.h:607
#define RAPIDJSON_ASSERT(x)
Assertion.
Definition: rapidjson.h:411
Here is the call graph for this function:

Member Function Documentation

◆ Flush()

template<typename CharType, typename OutputByteStream>
void AutoUTFOutputStream< CharType, OutputByteStream >::Flush ( )
inline

Definition at line 261 of file encodedstream.h.

261 { os_->Flush(); }
Here is the caller graph for this function:

◆ GetType()

template<typename CharType, typename OutputByteStream>
UTFType AutoUTFOutputStream< CharType, OutputByteStream >::GetType ( ) const
inline

Definition at line 258 of file encodedstream.h.

258 { return type_; }

◆ Peek()

template<typename CharType, typename OutputByteStream>
Ch AutoUTFOutputStream< CharType, OutputByteStream >::Peek ( ) const
inline

Definition at line 264 of file encodedstream.h.

264 { RAPIDJSON_ASSERT(false); return 0;}
#define RAPIDJSON_ASSERT(x)
Assertion.
Definition: rapidjson.h:411

◆ Put()

template<typename CharType, typename OutputByteStream>
void AutoUTFOutputStream< CharType, OutputByteStream >::Put ( Ch  c)
inline

Definition at line 260 of file encodedstream.h.

260 { putFunc_(*os_, c); }
Here is the caller graph for this function:

◆ PutBegin()

template<typename CharType, typename OutputByteStream>
Ch* AutoUTFOutputStream< CharType, OutputByteStream >::PutBegin ( )
inline

Definition at line 267 of file encodedstream.h.

267 { RAPIDJSON_ASSERT(false); return 0; }
#define RAPIDJSON_ASSERT(x)
Assertion.
Definition: rapidjson.h:411

◆ PutEnd()

template<typename CharType, typename OutputByteStream>
size_t AutoUTFOutputStream< CharType, OutputByteStream >::PutEnd ( Ch )
inline

Definition at line 268 of file encodedstream.h.

268 { RAPIDJSON_ASSERT(false); return 0; }
#define RAPIDJSON_ASSERT(x)
Assertion.
Definition: rapidjson.h:411

◆ Take()

template<typename CharType, typename OutputByteStream>
Ch AutoUTFOutputStream< CharType, OutputByteStream >::Take ( )
inline

Definition at line 265 of file encodedstream.h.

265 { RAPIDJSON_ASSERT(false); return 0;}
#define RAPIDJSON_ASSERT(x)
Assertion.
Definition: rapidjson.h:411

◆ Tell()

template<typename CharType, typename OutputByteStream>
size_t AutoUTFOutputStream< CharType, OutputByteStream >::Tell ( ) const
inline

Definition at line 266 of file encodedstream.h.

266 { RAPIDJSON_ASSERT(false); return 0; }
#define RAPIDJSON_ASSERT(x)
Assertion.
Definition: rapidjson.h:411

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