32bit型をラップしたAPI戻り値クラス。MSB(bit31)は失敗、成功のフラグ。bit0..30は戻り値を格納するために使用します。
class MWX_APIRET {
uint32_t _code;
public:
MWX_APIRET() : _code(0) {}
MWX_APIRET(bool b) {
_code = b ? 0x80000000 : 0;
}
MWX_APIRET(bool b, uint32_t val) {
_code = (b ? 0x80000000 : 0) + (val & 0x7fffffff);
}
inline bool is_success() const { return ((_code & 0x80000000) != 0); }
inline bool is_fail() const { return ((_code & 0x80000000) == 0); }
inline uint32_t get_value() const { return _code & 0x7fffffff; }
inline operator uint32_t() const { return get_value(); }
inline operator bool() const { return is_success(); }
};
コンストラクタ
MWX_APIRET()
MWX_APIRET(bool b)
MWX_APIRET(bool b, uint32_t val)
デフォルトコンストラクタはfalse
,0
の組み合わせで構築します。
またbool
型とuint32_t
型をパラメータとする明示的な構築も可能です。
bool
型のコンストラクタを実装しているため、以下のようにtrue
/false
を用いることができます。
MWX_APIRET myfunc() {
if (...) return true;
else false;
}
メソッド
is_success()
, operator bool()
inline bool is_success()
inline operator bool()
MSBに1
がセットされていればtrue
を返す。
inline bool is_fail()
MSBが0
の場合にtrue
を返す。
inline uint32_t get_value()
inline operator uint32_t()
bit0..30の値部を取得する。