AM Daemon ライブラリリファレンス
AccountingHandle.h
[詳解]
1 /// @file
2 /// @brief ALL.Net課金プレイを識別するためのハンドル構造体 AccountingHandle のヘッダ。
3 ///
4 /// Copyright(C)SEGA
5 
6 #ifndef AMDAEMON_ALLNET_ACCOUNTINGHANDLE_H
7 #define AMDAEMON_ALLNET_ACCOUNTINGHANDLE_H
8 
9 #include "amdaemon/env.h"
10 
11 #include <cstdint>
12 
13 namespace amdaemon
14 {
15 namespace allnet
16 {
17 /// @addtogroup g_allnet
18 /// @{
19 
20  //--------------------
21  // AccountingHandle 構造体定義
22  //--------------------
23 
24  /// @brief ALL.Net課金プレイを識別するためのハンドル構造体。
25  /// @note memcpy 可能。
26  /// @internal ライブラリ実装メモ: この型を直接共有メモリに配置する。
28  {
29  /// 内部値の表現型。
30  typedef std::uint32_t value_type;
31 
32  /// 内部値。 0 は無効値。
33  value_type value;
34 
35  /// @brief ハンドル値を作成する。
36  /// @param[in] value 内部値。 0 は無効値。
37  /// @return 作成されたハンドル値。
38  static AccountingHandle make(value_type value)
39  {
40  AccountingHandle result = { value };
41  return result;
42  }
43 
44  /// @brief 内部値 0 の無効なハンドル値を作成する。
45  /// @return 内部値 0 の無効なハンドル値。
47  {
48  return make(0);
49  }
50 
51  /// @brief 有効な値であるか否かを取得する。
52  /// @retval true 有効な値である場合。
53  /// @retval false 無効な値である場合。
54  ///
55  /// 内部値が 0 でなければ true を返す。
56  bool valid() const
57  {
58  return (value != 0);
59  }
60  };
61 
62 /// @}
63 
64  //--------------------
65  // インライン関数定義
66  //--------------------
67 
68  /// @brief 等価比較演算子のオーバロード。
69  /// @param[in] l 左辺値。
70  /// @param[in] r 右辺値。
71  /// @return 比較結果値。
72  /// @relatesalso AccountingHandle
73  inline bool operator==(const AccountingHandle& l, const AccountingHandle& r)
74  {
75  return (l.value == r.value);
76  }
77 
78  /// @brief 非等価比較演算子のオーバロード。
79  /// @param[in] l 左辺値。
80  /// @param[in] r 右辺値。
81  /// @return 比較結果値。
82  /// @relatesalso AccountingHandle
83  inline bool operator!=(const AccountingHandle& l, const AccountingHandle& r)
84  {
85  return !(l == r);
86  }
87 
88  /// @brief 小なり比較演算子のオーバロード。
89  /// @param[in] l 左辺値。
90  /// @param[in] r 右辺値。
91  /// @return 比較結果値。
92  /// @relatesalso AccountingHandle
93  inline bool operator<(const AccountingHandle& l, const AccountingHandle& r)
94  {
95  return (l.value < r.value);
96  }
97 
98  /// @brief 大なり比較演算子のオーバロード。
99  /// @param[in] l 左辺値。
100  /// @param[in] r 右辺値。
101  /// @return 比較結果値。
102  /// @relatesalso AccountingHandle
103  inline bool operator>(const AccountingHandle& l, const AccountingHandle& r)
104  {
105  return (r < l);
106  }
107 
108  /// @brief 小なり等価比較演算子のオーバロード。
109  /// @param[in] l 左辺値。
110  /// @param[in] r 右辺値。
111  /// @return 比較結果値。
112  /// @relatesalso AccountingHandle
113  inline bool operator<=(const AccountingHandle& l, const AccountingHandle& r)
114  {
115  return !(r < l);
116  }
117 
118  /// @brief 大なり等価比較演算子のオーバロード。
119  /// @param[in] l 左辺値。
120  /// @param[in] r 右辺値。
121  /// @return 比較結果値。
122  /// @relatesalso AccountingHandle
123  inline bool operator>=(const AccountingHandle& l, const AccountingHandle& r)
124  {
125  return !(l < r);
126  }
127 } // namespace allnet
128 } // namespace amdaemon
129 
130 namespace std
131 {
132  // 前方宣言
133  template<class T> struct hash;
134 
135  /// @brief ハッシュ値を求めるファンクタ構造体。
136  ///
137  /// std::hash クラステンプレートの
138  /// amdaemon::allnet::AccountingHandle 構造体に対する特殊化。
139  template<>
141  {
142  /// 戻り値の型。
143  typedef size_t result_type;
144 
145  /// 引数の型。
146  typedef ::amdaemon::allnet::AccountingHandle argument_type;
147 
148  /// @brief 引数のハッシュ値を取得する。
149  /// @param[in] handle 引数。
150  /// @return ハッシュ値。
151  result_type operator()(argument_type handle) const
152  {
153  return static_cast<result_type>(handle.value);
154  }
155  };
156 } // namespace std
157 
158 #endif // AMDAEMON_ALLNET_ACCOUNTINGHANDLE_H
std::uint32_t value_type
内部値の表現型。
Definition: AccountingHandle.h:30
bool operator<=(const AccountingHandle &l, const AccountingHandle &r)
小なり等価比較演算子のオーバロード。
Definition: AccountingHandle.h:113
Definition: AccessCode.h:202
size_t result_type
戻り値の型。
Definition: AccountingHandle.h:143
Daemonライブラリの環境定義を行うヘッダ。
bool operator<(const AccountingHandle &l, const AccountingHandle &r)
小なり比較演算子のオーバロード。
Definition: AccountingHandle.h:93
bool valid() const
有効な値であるか否かを取得する。
Definition: AccountingHandle.h:56
AM Daemon ライブラリクラス群の基底名前空間。
Definition: Log.h:13
value_type value
内部値。 0 は無効値。
Definition: AccountingHandle.h:33
bool operator>(const AccountingHandle &l, const AccountingHandle &r)
大なり比較演算子のオーバロード。
Definition: AccountingHandle.h:103
bool operator>=(const AccountingHandle &l, const AccountingHandle &r)
大なり等価比較演算子のオーバロード。
Definition: AccountingHandle.h:123
static AccountingHandle make(value_type value)
ハンドル値を作成する。
Definition: AccountingHandle.h:38
bool operator==(const AccountingHandle &l, const AccountingHandle &r)
等価比較演算子のオーバロード。
Definition: AccountingHandle.h:73
ALL.Net課金プレイを識別するためのハンドル構造体。
Definition: AccountingHandle.h:27
result_type operator()(argument_type handle) const
引数のハッシュ値を取得する。
Definition: AccountingHandle.h:151
bool operator!=(const AccountingHandle &l, const AccountingHandle &r)
非等価比較演算子のオーバロード。
Definition: AccountingHandle.h:83
static AccountingHandle zero()
内部値 0 の無効なハンドル値を作成する。
Definition: AccountingHandle.h:46
::amdaemon::allnet::AccountingHandle argument_type
引数の型。
Definition: AccountingHandle.h:146