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: 23906 $
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,
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     };
52 
53     NN_DEFINE_RESULT_FUNC_LM(MakePermanentResult, Result::LEVEL_PERMANENT, Result::MODULE_NN_NDM);
54     NN_DEFINE_RESULT_FUNC_LSM(MakeInternalResult, Result::LEVEL_STATUS, Result::SUMMARY_INTERNAL, Result::MODULE_NN_NDM);
55     NN_DEFINE_RESULT_FUNC_LSM(MakeOutOfResourceResult, Result::LEVEL_PERMANENT, Result::SUMMARY_OUT_OF_RESOURCE, Result::MODULE_NN_NDM);
56     NN_DEFINE_RESULT_FUNC_LSM(MakeInvalidStateResult, Result::LEVEL_STATUS, Result::SUMMARY_INVALID_STATE, Result::MODULE_NN_NDM);
57     NN_DEFINE_RESULT_FUNC_LSM(MakeCancelledResult, Result::LEVEL_STATUS, Result::SUMMARY_CANCELLED, Result::MODULE_NN_NDM);
58     NN_DEFINE_RESULT_FUNC_LSM(MakeInvalidArgumentResult, Result::LEVEL_PERMANENT, Result::SUMMARY_INVALID_ARGUMENT, Result::MODULE_NN_NDM);
59     NN_DEFINE_RESULT_FUNC_LSM(MakeNotSupportedResult, Result::LEVEL_USAGE, Result::SUMMARY_NOT_SUPPORTED, Result::MODULE_NN_NDM);
60 
61     //!<
62     NN_DEFINE_RESULT_CONST_LSM(
63         ResultInterruptByRequest,
64         MakeInvalidStateResult, DESCRIPTION_INTERRUPT_BY_REQUEST
65     );
66 
67     //!<
68     NN_DEFINE_RESULT_CONST_LSM(
69         ResultCanceledByOtherRequest,
70         MakeInvalidStateResult, DESCRIPTION_CANCELLED_BY_OTHER_REQUEST
71     );
72 
73     //!<
74     NN_DEFINE_RESULT_CONST_LSM(
75         ResultProcessingPriorityRequest,
76         MakeInvalidStateResult, DESCRIPTION_PROCESSING_PRIORITY_REQUEST
77     );
78 
79     //!<
80     NN_DEFINE_RESULT_CONST_LSM(
81         ResultInErrorState,
82         MakeInvalidStateResult, DESCRIPTION_IN_ERROR_STATE
83     );
84 
85     //!<
86     NN_DEFINE_RESULT_CONST_LSM(
87         ResultDisconnected,
88         MakeInvalidStateResult, DESCRIPTION_DISCONNECTED
89     );
90 
91     //!<
92     NN_DEFINE_RESULT_CONST_LSM(
93         ResultCancelledByHardwareEvents,
94         MakeInvalidStateResult, DESCRIPTION_CANCELLED_BY_HARDWARE_EVENTS
95     );
96 
97     //!<
98     NN_DEFINE_RESULT_CONST_LSM(
99         ResultCancelledByDisconnect,
100         MakeInvalidStateResult, DESCRIPTION_CANCELLED_BY_DISCONNECT
101     );
102 
103     //!<
104     NN_DEFINE_RESULT_CONST_LSM(
105         ResultCancelledByUserRequest,
106         MakeInvalidStateResult, DESCRIPTION_CANCELLED_BY_USER_REQUEST
107     );
108 
109     //!<
110     NN_DEFINE_RESULT_CONST_LSM(
111         ResultInvalidOperation,
112         MakeInvalidStateResult, DESCRIPTION_INVALID_OPERATION
113     );
114 
115     //!<
116     NN_DEFINE_RESULT_CONST_LSM(
117         ResultInvalidEnumValue,
118         MakeInvalidArgumentResult, Result::DESCRIPTION_INVALID_ENUM_VALUE
119     );
120 
121     //!<
122     NN_DEFINE_RESULT_CONST_LSM(
123         ResultOperationDenied,
124         MakeInvalidStateResult, DESCRIPTION_OPERATION_DENIED
125     );
126 
127     //!<
128     NN_DEFINE_RESULT_CONST_LSM(
129         ResultLockedByOtherProcess,
130         MakeInvalidStateResult, DESCRIPTION_LOCKED_BY_OTHER_PROCESS
131     );
132 
133     //!<
134     NN_DEFINE_RESULT_CONST_LSM(
135         ResultNotLocked,
136         MakeInvalidStateResult, DESCRIPTION_NOT_LOCKED
137     );
138 
139     //!<
140     NN_DEFINE_RESULT_CONST_LSM(
141         ResultAlreadyInitialized,
142         MakeInvalidStateResult, Result::DESCRIPTION_ALREADY_INITIALIZED
143     );
144 
145     //!<
146     NN_DEFINE_RESULT_CONST_LSM(
147         ResultNotSuspended,
148         MakeInvalidStateResult, DESCRIPTION_NOT_SUSPENDED
149     );
150 
151     //!<
152     NN_DEFINE_RESULT_CONST_LSM(
153         ResultAlreadySuspended,
154         MakeInvalidStateResult, DESCRIPTION_ALREADY_SUSPENDED
155     );
156 
157     //!<
158     NN_DEFINE_RESULT_CONST_LSM(
159         ResultNotInitialized,
160         MakeInvalidStateResult, Result::DESCRIPTION_NOT_INITIALIZED
161     );
162 
163     //!<
164     NN_DEFINE_RESULT_CONST_LSM(
165         ResultNotExclusive,
166         MakeInvalidStateResult, DESCRIPTION_NOT_EXCLUSIVE
167     );
168 
169     //!<
170     NN_DEFINE_RESULT_CONST_LSM(
171         ResultNotImplemented,
172         MakeNotSupportedResult, Result::DESCRIPTION_NOT_IMPLEMENTED
173     );
174 
175     //!<
176     NN_DEFINE_RESULT_CONST_LSM(
177         ResultExclusiveByOtherProcess,
178         MakeInvalidStateResult, DESCRIPTION_EXCLUSIVE_BY_OTHER_PROCESS
179     );
180 
181     //!<
182     NN_DEFINE_RESULT_CONST_LSM(
183         ResultExclusiveByOwnProcess,
184         MakeInvalidStateResult, DESCRIPTION_EXCLUSIVE_BY_OWN_PROCESS
185     );
186 }
187 }
188 
189 #define NN_NDM_WARN(result, ...) \
190         NN_LOG_WARN(__VA_ARGS__); \
191         nn::dbg::PrintResult(result);
192 
193 #define NN_NDM_WARN_AND_RETURN_IF_FAILED(result, ...) \
194 do \
195 { \
196     ::nn::Result nn_util_return_if_failure_result = (result); \
197     if (nn_util_return_if_failure_result.IsFailure()) \
198     { \
199         NN_NDM_WARN(result, __VA_ARGS__); \
200         return nn_util_return_if_failure_result; \
201     } \
202 } while(0)
203 
204 #define NN_NDM_WARN_IF_FAILED(result, ...) \
205 do \
206 { \
207     ::nn::Result nn_util_return_if_failure_result = (result); \
208     if (nn_util_return_if_failure_result.IsFailure()) \
209     { \
210         NN_NDM_WARN(result, __VA_ARGS__); \
211     } \
212 } while(0)
213 
214 #endif // __cplusplus
215 
216 #endif /* NN_NDM_NDM_RESULT_H_ */
217