AM Daemon ライブラリリファレンス
SerialId.h
[詳解]
1 /// @file
2 /// @brief シリアルID構造体 SerialId のヘッダ。
3 ///
4 /// Copyright(C)SEGA
5 
6 #ifndef AMDAEMON_SERIALID_H
7 #define AMDAEMON_SERIALID_H
8 
9 #include "amdaemon/env.h"
10 
11 #include <cstddef>
12 
13 namespace amdaemon
14 {
15 /// @addtogroup g_system
16 /// @{
17 
18  //--------------------
19  // StandardSerialId 構造体定義
20  //--------------------
21 
22  /// @brief 標準シリアルID構造体。
23  /// @note memcpy 可能。
24  /// @internal ライブラリ実装メモ: この型を直接共有メモリに配置する。
26  {
27  /// 標準シリアルID文字列長。
28  static const std::size_t Length = 16;
29 
30  wchar_t value[Length + 1]; ///< 標準シリアルID文字列。
31 
32  /// @brief インスタンスを作成する。
33  /// @param[in] value 標準シリアルID文字列。
34  /// @return 作成したインスタンス。
35  ///
36  /// @exception Exception
37  /// 引数 value に nullptr を渡した場合。
38  static StandardSerialId make(const wchar_t* value);
39 
40  /// @brief 標準シリアルID文字列が空であるか否かを取得する。
41  /// @retval true 標準シリアルID文字列が空である場合。
42  /// @retval false 標準シリアルID文字列が空ではない場合。
43  bool empty() const
44  {
45  return (value[0] == L'¥0');
46  }
47  };
48 
49  //--------------------
50  // ShortSerialId 構造体定義
51  //--------------------
52 
53  /// @brief 短縮シリアルID構造体。
54  /// @note memcpy 可能。
55  /// @internal ライブラリ実装メモ: この型を直接共有メモリに配置する。
57  {
58  /// 短縮シリアルID文字列長。
59  static const std::size_t Length = 11;
60 
61  wchar_t value[Length + 1]; ///< 短縮シリアルID文字列。
62 
63  /// @brief インスタンスを作成する。
64  /// @param[in] value 短縮シリアルID文字列。
65  /// @return 作成したインスタンス。
66  ///
67  /// @exception Exception
68  /// 引数 value に nullptr を渡した場合。
69  static ShortSerialId make(const wchar_t* value);
70 
71  /// @brief 短縮シリアルID文字列が空であるか否かを取得する。
72  /// @retval true 短縮シリアルID文字列が空である場合。
73  /// @retval false 短縮シリアルID文字列が空ではない場合。
74  bool empty() const
75  {
76  return (value[0] == L'¥0');
77  }
78  };
79 
80  //--------------------
81  // SerialId 構造体定義
82  //--------------------
83 
84  /// @brief シリアルID構造体。
85  /// @note memcpy 可能。
86  /// @internal ライブラリ実装メモ: この型を直接共有メモリに配置する。
87  struct SerialId
88  {
89  StandardSerialId id; ///< 標準シリアルID。
90  ShortSerialId shortId; ///< 短縮シリアルID。
91 
92  /// @brief インスタンスを作成する。
93  /// @param[in] value 標準シリアルID文字列。
94  /// @param[in] shortValue 短縮シリアルID文字列。
95  /// @return 作成したインスタンス。
96  ///
97  /// @exception Exception
98  /// 引数 value または shortValue に nullptr を渡した場合。
99  static SerialId make(const wchar_t* value, const wchar_t* shortValue)
100  {
101  SerialId result =
102  { StandardSerialId::make(value), ShortSerialId::make(shortValue) };
103  return result;
104  }
105 
106  /// @brief シリアルID文字列がすべて空であるか否かを取得する。
107  /// @retval true シリアルID文字列がすべて空である場合。
108  /// @retval false いずれかのシリアルID文字列が空ではない場合。
109  bool empty() const
110  {
111  return (id.empty() && shortId.empty());
112  }
113 
114  /// @brief シリアルID文字列を取得する。
115  /// @param[in] useShort 短縮シリアルIDを使うならば true 。
116  /// @return シリアルID文字列。
117  const wchar_t* toString(bool useShort = false) const
118  {
119  return useShort ? shortId.value : id.value;
120  }
121  };
122 
123 /// @}
124 
125  //--------------------
126  // 関数定義
127  //--------------------
128 
129  /// @brief 等価比較演算子のオーバロード。
130  /// @param[in] l 左辺値。
131  /// @param[in] r 右辺値。
132  /// @return 比較結果値。
133  /// @relatesalso StandardSerialId
134  bool operator==(const StandardSerialId& l, const StandardSerialId& r);
135 
136  /// @brief 非等価比較演算子のオーバロード。
137  /// @param[in] l 左辺値。
138  /// @param[in] r 右辺値。
139  /// @return 比較結果値。
140  /// @relatesalso StandardSerialId
141  inline bool operator!=(const StandardSerialId& l, const StandardSerialId& r)
142  {
143  return !(l == r);
144  }
145 
146  /// @brief 等価比較演算子のオーバロード。
147  /// @param[in] l 左辺値。
148  /// @param[in] r 右辺値。
149  /// @return 比較結果値。
150  /// @relatesalso ShortSerialId
151  bool operator==(const ShortSerialId& l, const ShortSerialId& r);
152 
153  /// @brief 非等価比較演算子のオーバロード。
154  /// @param[in] l 左辺値。
155  /// @param[in] r 右辺値。
156  /// @return 比較結果値。
157  /// @relatesalso ShortSerialId
158  inline bool operator!=(const ShortSerialId& l, const ShortSerialId& r)
159  {
160  return !(l == r);
161  }
162 
163  /// @brief 等価比較演算子のオーバロード。
164  /// @param[in] l 左辺値。
165  /// @param[in] r 右辺値。
166  /// @return 比較結果値。
167  /// @relatesalso SerialId
168  inline bool operator==(const SerialId& l, const SerialId& r)
169  {
170  return (l.id == r.id && l.shortId == r.shortId);
171  }
172 
173  /// @brief 非等価比較演算子のオーバロード。
174  /// @param[in] l 左辺値。
175  /// @param[in] r 右辺値。
176  /// @return 比較結果値。
177  /// @relatesalso SerialId
178  inline bool operator!=(const SerialId& l, const SerialId& r)
179  {
180  return !(l == r);
181  }
182 } // namespace amdaemon
183 
184 #endif // AMDAEMON_SERIALID_H
static ShortSerialId make(const wchar_t *value)
インスタンスを作成する。
短縮シリアルID構造体。
Definition: SerialId.h:56
標準シリアルID構造体。
Definition: SerialId.h:25
StandardSerialId id
標準シリアルID。
Definition: SerialId.h:89
Daemonライブラリの環境定義を行うヘッダ。
wchar_t value[Length+1]
標準シリアルID文字列。
Definition: SerialId.h:30
bool empty() const
シリアルID文字列がすべて空であるか否かを取得する。
Definition: SerialId.h:109
AM Daemon ライブラリクラス群の基底名前空間。
Definition: Log.h:13
static StandardSerialId make(const wchar_t *value)
インスタンスを作成する。
static const std::size_t Length
標準シリアルID文字列長。
Definition: SerialId.h:28
wchar_t value[Length+1]
短縮シリアルID文字列。
Definition: SerialId.h:61
bool empty() const
標準シリアルID文字列が空であるか否かを取得する。
Definition: SerialId.h:43
bool empty() const
短縮シリアルID文字列が空であるか否かを取得する。
Definition: SerialId.h:74
ShortSerialId shortId
短縮シリアルID。
Definition: SerialId.h:90
static SerialId make(const wchar_t *value, const wchar_t *shortValue)
インスタンスを作成する。
Definition: SerialId.h:99
シリアルID構造体。
Definition: SerialId.h:87
bool operator==(const StandardSerialId &l, const StandardSerialId &r)
等価比較演算子のオーバロード。
bool operator!=(const StandardSerialId &l, const StandardSerialId &r)
非等価比較演算子のオーバロード。
Definition: SerialId.h:141
const wchar_t * toString(bool useShort=false) const
シリアルID文字列を取得する。
Definition: SerialId.h:117