nlib
Base64OutputStream.h
[詳解]
1 
2 #pragma once
3 #ifndef INCLUDE_NN_NLIB_BASE64OUTPUTSTREAM_H_
4 #define INCLUDE_NN_NLIB_BASE64OUTPUTSTREAM_H_
5 
7 
8 NLIB_NAMESPACE_BEGIN
9 
10 class OutputStream;
11 
12 namespace detail {
13 
14 class NLIB_VIS_PUBLIC Base64OutputTransform NLIB_FINAL : public OutputTransform {
15  public:
16  enum NewLineMode { NEWLINEMODE_NONE = 0, NEWLINEMODE_CRLF, NEWLINEMODE_LF };
17 
18  Base64OutputTransform() NLIB_NOEXCEPT;
19  virtual errno_t Transform(OutputStream* os, const void* p, size_t nBytes,
20  bool doFlush) NLIB_NOEXCEPT NLIB_OVERRIDE;
21  virtual void* GetWorkBuffer(size_t* n) NLIB_NOEXCEPT NLIB_OVERRIDE;
22  virtual errno_t OnSetStream(OutputStream* os) NLIB_NOEXCEPT NLIB_OVERRIDE;
23  virtual errno_t OnClose(OutputStream* os) NLIB_NOEXCEPT NLIB_OVERRIDE;
24 
25  void SetNewLineMode(NewLineMode mode) NLIB_NOEXCEPT { m_NewLine = mode; }
26 
27  private:
28  int m_C;
29  int m_CLen;
30  NewLineMode m_NewLine;
31  int m_Column;
32  unsigned char m_Buf[192];
33 };
34 
35 } // namespace detail
36 
37 #ifndef NLIB_DOXYGEN
38 typedef OutputConverterStreamTempl<detail::Base64OutputTransform> Base64OutputStream;
39 #else
41  : public OutputConverterStreamTempl<detail::Base64OutputTransform> {
42  public:
43  // NOTE: define NewLineMode (not typedef) again for doxygen.
44  enum NewLineMode { NEWLINEMODE_NONE = 0, NEWLINEMODE_CRLF, NEWLINEMODE_LF };
45 
46  public:
48  NLIB_STATIC_ASSERT(static_cast<int>(NEWLINEMODE_NONE) ==
49  static_cast<int>(TransformType::NEWLINEMODE_NONE));
50  NLIB_STATIC_ASSERT(static_cast<int>(NEWLINEMODE_CRLF) ==
51  static_cast<int>(TransformType::NEWLINEMODE_CRLF));
52  NLIB_STATIC_ASSERT(static_cast<int>(NEWLINEMODE_LF) ==
53  static_cast<int>(TransformType::NEWLINEMODE_LF));
54  m_Transform.SetNewLineMode(static_cast<TransformType::NewLineMode>(mode));
55  }
56 };
57 #endif
58 
59 NLIB_NAMESPACE_END
60 
61 #endif // INCLUDE_NN_NLIB_BASE64OUTPUTSTREAM_H_
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
Definition: Platform.h:2151
#define NLIB_FINAL
利用可能であればfinalが定義されます。そうでない場合は空文字列です。
#define NLIB_OVERRIDE
利用可能であればoverrideが定義されます。そうでない場合は空文字列です。
void SetNewLineMode(NewLineMode mode) noexcept
改行モードを設定します。
OutputTransformの派生クラスを保持するためのクラスです。
#define NLIB_VIS_PUBLIC
関数やクラス等のシンボルをライブラリの外部に公開します。
Definition: Platform_unix.h:51
#define NLIB_STATIC_ASSERT(exp)
静的アサートが定義されます。利用可能であればstatic_assertを利用します。
Definition: Config.h:117
NewLineMode
出力されるBase64テキストの改行オプションです。デフォルトはNEWLINEMODE_NONEです。
データをBase64でエンコードして書きこむためのクラスです。
int errno_t
intのtypedefで、戻り値としてPOSIXのエラー値を返すことを示します。
Definition: NMalloc.h:24