1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     ndm_Result.h
4 
5   Copyright (C)2009 Nintendo Co., Ltd.  All rights reserved.
6 
7   These coded instructions, statements, and computer programs contain
8   proprietary information of Nintendo of America Inc. and/or Nintendo
9   Company Ltd., and are protected by Federal copyright law.  They may
10   not be disclosed to third parties or copied or duplicated in any form,
11   in whole or in part, without the prior written consent of Nintendo.
12 
13   $Rev: 31226 $
14  *---------------------------------------------------------------------------*/
15 /*!
16     @file
17 
18     :include nn/ndm.h
19  */
20 
21 #ifndef NN_NDM_NDM_RESULT_H_
22 #define NN_NDM_NDM_RESULT_H_
23 
24 #ifdef __cplusplus
25 
26 #include <nn/Result.h>
27 #include <nn/util/util_Result.h>
28 
29 namespace nn {
30 namespace ndm {
31 
32     enum Description
33     {
34         DESCRIPTION_INTERRUPT_BY_REQUEST = 1,
35         DESCRIPTION_PROCESSING_PRIORITY_REQUEST,
36         DESCRIPTION_IN_ERROR_STATE,
37         DESCRIPTION_DISCONNECTED,
38         DESCRIPTION_CANCELLED_BY_OTHER_REQUEST,
39         DESCRIPTION_CANCELLED_BY_HARDWARE_EVENTS,
40         DESCRIPTION_CANCELLED_BY_DISCONNECT,
41         DESCRIPTION_CANCELLED_BY_USER_REQUEST,
42         DESCRIPTION_OPERATION_DENIED,
43         DESCRIPTION_LOCKED_BY_OTHER_PROCESS,
44         DESCRIPTION_NOT_LOCKED,
45         DESCRIPTION_ALREADY_SUSPENDED,
46         DESCRIPTION_NOT_SUSPENDED,
47         DESCRIPTION_INVALID_OPERATION,
48         DESCRIPTION_NOT_EXCLUSIVE,
49         DESCRIPTION_EXCLUSIVE_BY_OTHER_PROCESS,
50         DESCRIPTION_EXCLUSIVE_BY_OWN_PROCESS,
51         DESCRIPTION_BACKGROUND_DISCONNECTED
52     };
53 
54     NN_DEFINE_RESULT_FUNC_LM(MakePermanentResult, Result::LEVEL_PERMANENT, Result::MODULE_NN_NDM);
55     NN_DEFINE_RESULT_FUNC_LSM(MakeInternalResult, Result::LEVEL_STATUS, Result::SUMMARY_INTERNAL, Result::MODULE_NN_NDM);
56     NN_DEFINE_RESULT_FUNC_LSM(MakeOutOfResourceResult, Result::LEVEL_PERMANENT, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_NDM);
57     NN_DEFINE_RESULT_FUNC_LSM(MakeInvalidStateResult, Result::LEVEL_STATUS, Result::SUMMARY_INVALID_STATE, Result::MODULE_NN_NDM);
58     NN_DEFINE_RESULT_FUNC_LSM(MakeCancelledResult, Result::LEVEL_STATUS, Result::SUMMARY_CANCELLED, Result::MODULE_NN_NDM);
59     NN_DEFINE_RESULT_FUNC_LSM(MakeInvalidArgumentResult, Result::LEVEL_PERMANENT, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_NDM);
60     NN_DEFINE_RESULT_FUNC_LSM(MakeNotSupportedResult, Result::LEVEL_USAGE, Result::SUMMARY_NOT_SUPPORTED, Result::MODULE_NN_NDM);
61 
62     //!<
63     NN_DEFINE_RESULT_CONST_LSM(
64         ResultInterruptByRequest,
65         MakeInvalidStateResult, DESCRIPTION_INTERRUPT_BY_REQUEST
66     );
67 
68     //!<
69     NN_DEFINE_RESULT_CONST_LSM(
70         ResultCanceledByOtherRequest,
71         MakeInvalidStateResult, DESCRIPTION_CANCELLED_BY_OTHER_REQUEST
72     );
73 
74     //!<
75     NN_DEFINE_RESULT_CONST_LSM(
76         ResultProcessingPriorityRequest,
77         MakeInvalidStateResult, DESCRIPTION_PROCESSING_PRIORITY_REQUEST
78     );
79 
80     //!<
81     NN_DEFINE_RESULT_CONST_LSM(
82         ResultInErrorState,
83         MakeInvalidStateResult, DESCRIPTION_IN_ERROR_STATE
84     );
85 
86     //!<
87     NN_DEFINE_RESULT_CONST_LSM(
88         ResultDisconnected,
89         MakeInvalidStateResult, DESCRIPTION_DISCONNECTED
90     );
91 
92     //!<
93     NN_DEFINE_RESULT_CONST_LSM(
94         ResultCancelledByHardwareEvents,
95         MakeInvalidStateResult, DESCRIPTION_CANCELLED_BY_HARDWARE_EVENTS
96     );
97 
98     //!<
99     NN_DEFINE_RESULT_CONST_LSM(
100         ResultCancelledByDisconnect,
101         MakeInvalidStateResult, DESCRIPTION_CANCELLED_BY_DISCONNECT
102     );
103 
104     //!<
105     NN_DEFINE_RESULT_CONST_LSM(
106         ResultCancelledByUserRequest,
107         MakeInvalidStateResult, DESCRIPTION_CANCELLED_BY_USER_REQUEST
108     );
109 
110     //!<
111     NN_DEFINE_RESULT_CONST_LSM(
112         ResultInvalidOperation,
113         MakeInvalidStateResult, DESCRIPTION_INVALID_OPERATION
114     );
115 
116     //!<
117     NN_DEFINE_RESULT_CONST_LSM(
118         ResultInvalidEnumValue,
119         MakeInvalidArgumentResult, Result::DESCRIPTION_INVALID_ENUM_VALUE
120     );
121 
122     //!<
123     NN_DEFINE_RESULT_CONST_LSM(
124         ResultOperationDenied,
125         MakeInvalidStateResult, DESCRIPTION_OPERATION_DENIED
126     );
127 
128     //!<
129     NN_DEFINE_RESULT_CONST_LSM(
130         ResultLockedByOtherProcess,
131         MakeInvalidStateResult, DESCRIPTION_LOCKED_BY_OTHER_PROCESS
132     );
133 
134     //!<
135     NN_DEFINE_RESULT_CONST_LSM(
136         ResultNotLocked,
137         MakeInvalidStateResult, DESCRIPTION_NOT_LOCKED
138     );
139 
140     //!<
141     NN_DEFINE_RESULT_CONST_LSM(
142         ResultAlreadyInitialized,
143         MakeInvalidStateResult, Result::DESCRIPTION_ALREADY_INITIALIZED
144     );
145 
146     //!<
147     NN_DEFINE_RESULT_CONST_LSM(
148         ResultNotSuspended,
149         MakeInvalidStateResult, DESCRIPTION_NOT_SUSPENDED
150     );
151 
152     //!<
153     NN_DEFINE_RESULT_CONST_LSM(
154         ResultAlreadySuspended,
155         MakeInvalidStateResult, DESCRIPTION_ALREADY_SUSPENDED
156     );
157 
158     //!<
159     NN_DEFINE_RESULT_CONST_LSM(
160         ResultNotInitialized,
161         MakeInvalidStateResult, Result::DESCRIPTION_NOT_INITIALIZED
162     );
163 
164     //!<
165     NN_DEFINE_RESULT_CONST_LSM(
166         ResultNotExclusive,
167         MakeInvalidStateResult, DESCRIPTION_NOT_EXCLUSIVE
168     );
169 
170     //!<
171     NN_DEFINE_RESULT_CONST_LSM(
172         ResultNotImplemented,
173         MakeNotSupportedResult, Result::DESCRIPTION_NOT_IMPLEMENTED
174     );
175 
176     //!<
177     NN_DEFINE_RESULT_CONST_LSM(
178         ResultExclusiveByOtherProcess,
179         MakeInvalidStateResult, DESCRIPTION_EXCLUSIVE_BY_OTHER_PROCESS
180     );
181 
182     //!<
183     NN_DEFINE_RESULT_CONST_LSM(
184         ResultExclusiveByOwnProcess,
185         MakeInvalidStateResult, DESCRIPTION_EXCLUSIVE_BY_OWN_PROCESS
186     );
187 
188     //!<
189     NN_DEFINE_RESULT_CONST_LSM(
190         ResultBackgroundDisconnected,
191         MakeInvalidStateResult, DESCRIPTION_BACKGROUND_DISCONNECTED
192     );
193 }
194 }
195 
196 #define NN_NDM_WARN(result, ...) \
197         NN_LOG_WARN(__VA_ARGS__); \
198         nn::dbg::PrintResult(result);
199 
200 #define NN_NDM_WARN_AND_RETURN_IF_FAILED(result, ...) \
201 do \
202 { \
203     ::nn::Result nn_util_return_if_failure_result = (result); \
204     if (nn_util_return_if_failure_result.IsFailure()) \
205     { \
206         NN_NDM_WARN(result, __VA_ARGS__); \
207         return nn_util_return_if_failure_result; \
208     } \
209 } while(0)
210 
211 #define NN_NDM_WARN_IF_FAILED(result, ...) \
212 do \
213 { \
214     ::nn::Result nn_util_return_if_failure_result = (result); \
215     if (nn_util_return_if_failure_result.IsFailure()) \
216     { \
217         NN_NDM_WARN(result, __VA_ARGS__); \
218     } \
219 } while(0)
220 
221 #endif // __cplusplus
222 
223 #endif /* NN_NDM_NDM_RESULT_H_ */
224