nlib
StringPrep.h
[詳解]
1 
2 /*--------------------------------------------------------------------------------*
3  Project: CrossRoad
4  Copyright (C)Nintendo All rights reserved.
5 
6  These coded instructions, statements, and computer programs contain proprietary
7  information of Nintendo and/or its licensed developers and are protected by
8  national and international copyright laws. They may not be disclosed to third
9  parties or copied or duplicated in any form, in whole or in part, without the
10  prior written consent of Nintendo.
11 
12  The content herein is highly confidential and should be handled accordingly.
13  *--------------------------------------------------------------------------------*/
14 
15 #pragma once
16 #ifndef INCLUDE_NN_NLIB_UNICODE_STRINGPREP_H_
17 #define INCLUDE_NN_NLIB_UNICODE_STRINGPREP_H_
18 
19 #include "nn/nlib/Config.h"
20 
21 NLIB_NAMESPACE_BEGIN
22 namespace unicode {
23 
25  size_t n;
26  uint32_t code[4];
27 };
28 
30  // See RFC3454
31  public:
32  NLIB_VIS_PUBLIC static bool InTableA1(uint32_t utf32) NLIB_NOEXCEPT;
33 
34  NLIB_VIS_PUBLIC static bool InTableB1(uint32_t utf32) NLIB_NOEXCEPT;
35  NLIB_VIS_PUBLIC static bool MapTableB2(uint32_t utf32, StringPrepMapResult* m) NLIB_NOEXCEPT;
36  NLIB_VIS_PUBLIC static bool MapTableB3(uint32_t utf32, StringPrepMapResult* m) NLIB_NOEXCEPT;
37 
38  static bool InTableC11(uint32_t utf32) NLIB_NOEXCEPT { return utf32 == 0x0020; }
39  NLIB_VIS_PUBLIC static bool InTableC12(uint32_t utf32) NLIB_NOEXCEPT;
40  static bool InTableC21(uint32_t utf32) NLIB_NOEXCEPT {
41  return utf32 < 0x0020 || utf32 == 0x007F;
42  }
43  NLIB_VIS_PUBLIC static bool InTableC22(uint32_t utf32) NLIB_NOEXCEPT;
44 
45  NLIB_VIS_PUBLIC static bool InTableC3(uint32_t utf32) NLIB_NOEXCEPT;
46  NLIB_VIS_PUBLIC static bool InTableC4(uint32_t utf32) NLIB_NOEXCEPT;
47  static bool InTableC5(uint32_t utf32) NLIB_NOEXCEPT {
48  return utf32 >= 0xD800 && utf32 <= 0xDFFF;
49  }
50  static bool InTableC6(uint32_t utf32) NLIB_NOEXCEPT {
51  return utf32 >= 0xFFF9 && utf32 <= 0xFFFD;
52  }
53  static bool InTableC7(uint32_t utf32) NLIB_NOEXCEPT {
54  return utf32 >= 0x2FF0 && utf32 <= 0x2FFB;
55  }
56  NLIB_VIS_PUBLIC static bool InTableC8(uint32_t utf32) NLIB_NOEXCEPT;
57  static bool InTableC9(uint32_t utf32) NLIB_NOEXCEPT {
58  return utf32 == 0xE0001 || (utf32 >= 0xE0020 && utf32 <= 0xE007F);
59  }
60  NLIB_VIS_PUBLIC static bool InTableD1(uint32_t utf32) NLIB_NOEXCEPT;
61  NLIB_VIS_PUBLIC static bool InTableD2(uint32_t utf32) NLIB_NOEXCEPT;
62 };
63 
64 } // namespace unicode
65 NLIB_NAMESPACE_END
66 
67 #endif // INCLUDE_NN_NLIB_UNICODE_STRINGPREP_H_
static bool InTableC9(uint32_t utf32) noexcept
RFC3454のC.9に記載された文字(タグ文字)かどうかを判定します。
Definition: StringPrep.h:57
RFC3454で定義されている各種テーブルを実装しています。
Definition: StringPrep.h:29
#define NLIB_VIS_PUBLIC
関数やクラス等のシンボルをライブラリの外部に公開します。
Definition: Platform_unix.h:89
StringPrepによるマッピングの結果を格納する構造体です。
Definition: StringPrep.h:24
static bool InTableC11(uint32_t utf32) noexcept
RFC3454のC.1.1に記載された文字(ASCIIのスペースのみ)かどうかを判定します。
Definition: StringPrep.h:38
size_t n
StringPrepMapResult::codeに格納されている文字数
Definition: StringPrep.h:25
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
Definition: Config.h:99
開発環境別の設定が書かれるファイルです。
static bool InTableC5(uint32_t utf32) noexcept
RFC3454のC.5に記載された文字(サロゲートコード)かどうかを判定します。
Definition: StringPrep.h:47
static bool InTableC6(uint32_t utf32) noexcept
RFC3454のC.6に記載された文字(平文として不適切)かどうかを判定します。
Definition: StringPrep.h:50
#define NLIB_FINAL
利用可能であればfinalが定義されます。そうでない場合は空文字列です。
Definition: Config.h:229
static bool InTableC21(uint32_t utf32) noexcept
RFC3454のC.2.1に記載された文字(ASCIIの制御文字)かどうかを判定します。
Definition: StringPrep.h:40
static bool InTableC7(uint32_t utf32) noexcept
RFC3454のC.7に記載された文字(正規表現には不適切)かどうかを判定します。
Definition: StringPrep.h:53