nlib
CsvReader.h
[詳解]
1 
2 #pragma once
3 #ifndef INCLUDE_NN_NLIB_MSGPACK_CSVREADER_H_
4 #define INCLUDE_NN_NLIB_MSGPACK_CSVREADER_H_
5 
7 #include "nn/nlib/InputStream.h"
8 #include "nn/nlib/TextReader.h"
9 
10 #if defined(_MSC_VER) && defined(nx_msgpack_EXPORTS)
11 #undef NLIB_VIS_PUBLIC
12 #define NLIB_VIS_PUBLIC NLIB_WINEXPORT
13 #endif
14 
15 NLIB_NAMESPACE_BEGIN
16 namespace msgpack {
17 
19  public:
20  // In Conformance with RFC4180(https://www.ietf.org/rfc/rfc4180.txt).
21  // except that
22  // pass UTF-8, the UTF-8 string is checked validity.
23  // pass CR, LF, CRLF as a new line.
24  CsvReader() NLIB_NOEXCEPT : m_ErrorValue(0) {}
25  ~CsvReader() NLIB_NOEXCEPT { m_Reader.Close(); }
26  bool Init(InputStream* stream) NLIB_NOEXCEPT NLIB_NONNULL;
27  bool Close() NLIB_NOEXCEPT { return m_Reader.Close(); }
28  errno_t GetErrorValue() const NLIB_NOEXCEPT { return m_ErrorValue; }
29 
30  public:
31  static bool Read(MpObject* obj, const char* csvtext) NLIB_NOEXCEPT NLIB_NONNULL;
33  InputStream* GetStream() NLIB_NOEXCEPT { return m_Reader.GetStream(); }
34  NLIB_SAFE_BOOL(CsvReader, GetErrorValue() == 0)
35 
36  private:
37  void SetError(errno_t e) NLIB_NOEXCEPT {
38  if (m_ErrorValue == 0) m_ErrorValue = e;
39  }
40 
41  private:
42  errno_t m_ErrorValue;
43  TextReader m_Reader;
45 };
46 
47 } // namespace msgpack
48 NLIB_NAMESPACE_END
49 
50 #if defined(_MSC_VER) && defined(nx_msgpack_EXPORTS)
51 #undef NLIB_VIS_PUBLIC
52 #define NLIB_VIS_PUBLIC NLIB_WINIMPORT
53 #endif
54 
55 #endif // INCLUDE_NN_NLIB_MSGPACK_CSVREADER_H_
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
Definition: Platform.h:2151
CSVパーサーです。ストリームからCSV文字列を読み込んでパースします。
Definition: CsvReader.h:18
#define NLIB_FINAL
利用可能であればfinalが定義されます。そうでない場合は空文字列です。
#define NLIB_NONNULL
全ての引数にNULLを指定することができないことを示します。
Definition: Platform_unix.h:66
#define NLIB_DISALLOW_COPY_AND_ASSIGN(TypeName)
TypeName で指定されたクラスのコピーコンストラクタと代入演算子を禁止します。
Definition: Config.h:126
#define NLIB_SAFE_BOOL(class_name, exp)
クラス内に安全なoperator bool()を定義します。 可能であればC++11のexplicit boolを利用します。 ...
Definition: Config.h:141
入力ストリームの基底クラスを定義しています。
MessagePack又はJSONを読み込むことで作成されるオブジェクトです。
Definition: MpObject.h:83
errno_t GetErrorValue() const noexcept
発生したエラーを取得します。
Definition: CsvReader.h:28
InputStream * GetStream() noexcept
Init()で設定したベースストリームを取得します。
Definition: CsvReader.h:33
ストリームからテキストを読み込むクラスを定義しています。
ストリームからテキストを読み込むクラスです。
Definition: TextReader.h:20
MessagePack, JSON及びCSVを読み込むと作成されるオブジェクトです。
入力ストリームの基底クラスです。このクラスを実体化することはできません。
Definition: InputStream.h:15
~CsvReader() noexcept
デストラクタです。
Definition: CsvReader.h:25
CsvReader() noexcept
デフォルトコンストラクタです。
Definition: CsvReader.h:24
#define NLIB_VIS_PUBLIC
関数やクラス等のシンボルをライブラリの外部に公開します。
Definition: Platform_unix.h:51
bool Read(BinaryReader *r, T *x)
この関数テンプレートを特殊化することで、ユーザー定義クラスに読み込むことができます。 ...
Definition: BinaryReader.h:158
bool Close() noexcept
CsvReader をクローズします。
Definition: CsvReader.h:27
int errno_t
intのtypedefで、戻り値としてPOSIXのエラー値を返すことを示します。
Definition: NMalloc.h:24