ctru_sys/
result.rs

1//! Ports of macros in
2//! <https://github.com/devkitPro/libctru/blob/master/libctru/include/3ds/result.h>
3
4use crate::Result;
5
6/// Checks whether a result code indicates success.
7pub fn R_SUCCEEDED(res: Result) -> bool {
8    res >= 0
9}
10
11/// Checks whether a result code indicates failure.
12pub fn R_FAILED(res: Result) -> bool {
13    res < 0
14}
15
16/// Returns the level of a result code.
17pub fn R_LEVEL(res: Result) -> libc::c_uchar {
18    ((res >> 27) & 0x1F) as _
19}
20
21/// Returns the summary of a result code.
22pub fn R_SUMMARY(res: Result) -> libc::c_uchar {
23    ((res >> 21) & 0x3F) as _
24}
25
26/// Returns the module ID of a result code.
27pub fn R_MODULE(res: Result) -> libc::c_uchar {
28    ((res >> 10) & 0xFF) as _
29}
30
31/// Returns the description of a result code.
32pub fn R_DESCRIPTION(res: Result) -> libc::c_ushort {
33    (res & 0x3FF) as _
34}
35
36/// Builds a result code from its constituent components.
37pub fn MAKERESULT(level: Result, summary: Result, module: Result, description: Result) -> Result {
38    ((level & 0x1F) << 27)
39        | ((summary & 0x3F) << 21)
40        | ((module & 0xFF) << 10)
41        | (description & 0x3FF)
42}