nlib
|
ストリームからテキストを読み込むクラスです。 [詳解]
#include "nn/nlib/TextReader.h"
公開メンバ関数 | |
bool | Init (InputStream *stream) noexcept |
ストリームを与えてテキストリーダーを初期化します。 [詳解] | |
int | Read () noexcept |
ストリームから1文字を読み込み、UTF-32で返します。 [詳解] | |
int | Peek () noexcept |
ストリームの先頭の1文字を、UTF-32で返します。 [詳解] | |
int | SkipWs () noexcept |
ストリーム内の空白(スペース,改行,タブ,復帰)文字を読み飛ばして、読み飛ばした空白の数を返します。 [詳解] | |
bool | ReadUntil (size_t *len, char *buf, size_t n, char delim) noexcept |
delim まで最大n バイトのUTF-8文字列を読み込みbuf に格納します。 [詳解] | |
template<size_t N> | |
bool | ReadUntil (size_t *len, char(&buf)[N], char delim) noexcept |
ReadUntil(len, buf, N, delim) を呼び出します。 | |
template<class T > | |
bool | ReadUntil (size_t *len, char *buf, size_t n, T pred) noexcept |
最大n バイトのUTF-8文字列を読み込みbuf に格納します。 [詳解] | |
template<class T , size_t N> | |
bool | ReadUntil (size_t *len, char(&buf)[N], T pred) noexcept |
ReadUntil(len, buf, N, pred) を呼び出します。 | |
size_t | ReadDecimalString (char *buf, size_t n) noexcept |
0-9 までの文字を最大n 文字まで読み込みbuf に格納します。 [詳解] | |
template<size_t N> | |
size_t | ReadDecimalString (char(&buf)[N]) noexcept |
ReadDecimalString(buf, N) を呼び出します。 | |
bool | Proceed (const char *str, size_t n) noexcept |
文字列str の分だけストリームを進めます。 [詳解] | |
bool | Proceed (char c) noexcept |
文字c の分だけストリームを進めます。 [詳解] | |
bool | ProceedEx (const char *str) noexcept |
文字列str の分だけストリームを進めます。文字列の長さ制限はありませんが、一致しない場合もストリームの位置が変更される可能性があります。 [詳解] | |
int | ReadAsUtf8 (char *b0, char *b1, char *b2, char *b3) noexcept |
ストリームから1コードポイントを読み込み、b0 , b1 , b2 , b3 にUTF-8で格納します。 [詳解] | |
int | ReadAsUtf16 (nlib_utf16_t *upper, nlib_utf16_t *lower) noexcept |
ストリームから1コードポイントを読み込み、upper , lower にUTF-16で格納します。 [詳解] | |
int | PeekAsUtf16 (nlib_utf16_t *upper, nlib_utf16_t *lower) noexcept |
ストリームの先頭1コードポイントを、upper , lower にUTF-16で格納します。 [詳解] | |
bool | Close () noexcept |
テキストリーダーをクローズします。 [詳解] | |
void | SetError (errno_t e) const noexcept |
エラー値を設定します。 [詳解] | |
errno_t | GetErrorValue () const noexcept |
読み込みが失敗した際に、エラーの原因を取得できます。 [詳解] | |
InputStream * | GetStream () noexcept |
テキストリーダーが書き込みを行うストリームを取得します。 [詳解] | |
int | GetLine () const noexcept |
現在の行番号を取得します。 [詳解] | |
int | GetColumn () const noexcept |
現在の桁を取得します。 [詳解] | |
operator bool () const | |
内部でエラーが発生していなければtrue を返します。 | |
基本的なメンバ関数 | |
TextReader () noexcept | |
デフォルトコンストラクタです。 | |
virtual | ~TextReader () noexcept |
デストラクタです。ストリームはクローズされません。 | |
ストリームからテキストを読み込むクラスです。
CRLF
はLF
として渡されます。 CR
はLF
として渡されます。 LF
はLF
として渡されます。 EILSEQ
)になります。 U+D800-U+DFFF
に対応するUTF-8を検出した場合もエラー(EILSEQ
)になります。 TextReader
を継承し、FillBuffer_()
メンバ関数をオーバーライドすることによって、UTF-8テキストのチェックを追加することができます。 TextReader
クラスではUTF-8が有効かどうかと改行コードの処理を行っています。 TextReader.h の 20 行目に定義があります。
|
noexcept |
テキストリーダーをクローズします。
true
を返します。
|
inlinenoexcept |
|
inlinenoexcept |
読み込みが失敗した際に、エラーの原因を取得できます。
0 | エラーは発生していません。 |
EINVAL | 引数が間違っている。 |
EEXIST | 初期化を2重に行おうとした。 |
EBADF | 読み込みストリームが存在しない。 |
EIO | 何らかの原因でストリームからの読み取りに失敗した。 |
EILSEQ | 不正な文字が見つかった。 |
TextReader.h の 149 行目に定義があります。
|
inlinenoexcept |
|
inlinenoexcept |
|
noexcept |
ストリームを与えてテキストリーダーを初期化します。
[in] | stream | ストリーム |
true
stream
がNULL
の場合はfalse
を返します。 BOM付きUTF-8の場合はBOMの部分を読み取ろうとします。 BOMの読取に失敗した場合もfalse
を返します。
|
inlinenoexcept |
ストリームの先頭の1文字を、UTF-32で返します。
TextReader.h の 45 行目に定義があります。
|
inlinenoexcept |
ストリームの先頭1コードポイントを、upper
, lower
にUTF-16で格納します。
[out] | upper | UTF-16の文字、又は上位サロゲートが格納されます。 |
[out] | lower | サロゲートペアの場合に下位サロゲートが格納されます。 |
1 | upper のみに格納されています。 |
2 | サロゲートペアがupper とlower に格納されています。 |
0 | ストリームの終端に達した場合やエラーの場合です。 |
TextReader.h の 141 行目に定義があります。
|
noexcept |
文字列str
の分だけストリームを進めます。
[in] | str | UTF-8文字列へのポインタ |
[in] | n | 文字列長(バイト) |
true | ストリームの先頭がstr に一致した場合 |
false | そうでない場合。 |
str
に一致した場合、ストリームをその分だけ読み進めます。 一致しなかった場合、ストリームは現在位置のままです。 str
の文字列長は200以内で、改行を含まずUTF-8の切れ目で終えている必要があります。 str
がそうでない場合の動作は不定です。
|
inlinenoexcept |
文字c
の分だけストリームを進めます。
[in] | c | 読み飛ばす文字 |
true | ストリームの先頭がc に一致した場合 |
false | そうでない場合 |
c
に一致した場合、ストリームをその分だけ読み進めます。 一致しなかった場合、ストリームは現在位置のままです。 c
はASCII文字である必要があり、更に改行文字でない必要があります。 TextReader.h の 89 行目に定義があります。
|
noexcept |
文字列str
の分だけストリームを進めます。文字列の長さ制限はありませんが、一致しない場合もストリームの位置が変更される可能性があります。
[in] | str | UTF-8文字列へのポインタ |
true | ストリームの先頭がstr に一致した場合 |
false | そうでない場合。 |
str
は改行を含まずUTF-8の切れ目で終えている必要があります。
|
inlinenoexcept |
ストリームから1文字を読み込み、UTF-32で返します。
TextReader.h の 25 行目に定義があります。
|
inlinenoexcept |
ストリームから1コードポイントを読み込み、upper
, lower
にUTF-16で格納します。
[out] | upper | UTF-16の文字、又は上位サロゲートが格納されます。 |
[out] | lower | サロゲートペアの場合に下位サロゲートが格納されます。 |
1 | upper のみに格納されています。 |
2 | サロゲートペアがupper とlower に格納されています。 |
0 | ストリームの終端に達した場合やエラーの場合です。 |
TextReader.h の 137 行目に定義があります。
|
inlinenoexcept |
ストリームから1コードポイントを読み込み、b0
, b1
, b2
, b3
にUTF-8で格納します。
[out] | b0 | UTF-8文字の1バイト目が格納されます。 |
[out] | b1 | UTF-8文字の2バイト目が格納されます。 |
[out] | b2 | UTF-8文字の3バイト目が格納されます。 |
[out] | b3 | UTF-8文字の4バイト目が格納されます。 |
1 | b0 のみに格納されています。 |
2 | b0 , b1 に格納されています。 |
3 | b0 , b1 , b2 に格納されています。 |
4 | b0 , b1 , b2 , b3 に格納されています。 |
0 | ストリームの終端に達した場合やエラーの場合です。 |
TextReader.h の 101 行目に定義があります。
|
noexcept |
0-9
までの文字を最大n
文字まで読み込みbuf
に格納します。
[out] | buf | 文字列が格納されるバッファ |
[in] | n | バッファサイズ |
buf
はヌル文字で終端されることはありません。
|
noexcept |
delim
まで最大n
バイトのUTF-8文字列を読み込みbuf
に格納します。
[out] | len | bufに格納されたバイト数 |
[out] | buf | 文字列を格納するバッファ |
[in] | n | バッファサイズ |
[in] | delim | デリミタ |
n
バイト目までにデリミタが見つかった場合はtrue
, そうでなければfalse
delim
は読み込まれず、buf
はヌル文字で終端されることはありません。 また、必ずUTF-8のコードポイント単位で読み込まれます。
|
noexcept |
最大n
バイトのUTF-8文字列を読み込みbuf
に格納します。
T | 判定用関数オブジェクトの型 |
[out] | len | buf に格納されたバイト数 |
[out] | buf | 文字列を格納するバッファ |
[in] | n | バッファサイズ |
[in] | pred | 関数オブジェクト |
n
バイト目までにデリミタが見つかった場合はtrue
, そうでなければfalse
pred(const char* ptr)
を呼び出してデリミタかどうかを判定します。 pred
の引数となるptr
はUTF-8文字へのポインタで、1コードポイント分のデータにアクセスが可能です。 buf
はヌル文字で終端されることはありません。 また、必ずUTF-8のコードポイント単位で読み込まれます。 TextReader.h の 187 行目に定義があります。
|
inlinenoexcept |
|
inlinenoexcept |
© 2013, 2014, 2015 Nintendo Co., Ltd. All rights reserved.