1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     dlp_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: 25473 $
14  *---------------------------------------------------------------------------*/
15 /*!
16     @file
17 
18     :include nn/dlp.h
19  */
20 
21 #ifndef NN_DLP_CTR_DLP_RESULT_H_
22 #define NN_DLP_CTR_DLP_RESULT_H_
23 
24 #ifdef __cplusplus
25 
26 #include <nn/Result.h>
27 
28 namespace nn {
29 namespace dlp {
30 namespace CTR {
31 
32     enum Description
33     {
34         DESCRIPTION_NO_DESCRIPTION = 0,
35         DESCRIPTION_UNDERLAID_COMM_FAILED,
36         DESCRIPTION_CIA_ACCESS_FAILED,
37         DESCRIPTION_CIA_IMPORT_FAILED,
38         DESCRIPTION_INVALID_MEDIA_TYPE,
39         DESCRIPTION_INVALID_REGION
40     };
41 
42     namespace detail {
MakeSuccess(Result::Summary summary,int description)43         inline Result MakeSuccess(Result::Summary summary, int description)
44             { return Result(Result::LEVEL_SUCCESS, summary, Result::MODULE_NN_DLP, description); }
MakeFatalResult(Result::Summary summary,int description)45         inline Result MakeFatalResult(Result::Summary summary, int description)
46             { return Result(Result::LEVEL_FATAL, summary, Result::MODULE_NN_DLP, description); }
MakeResetResult(Result::Summary summary,int description)47         inline Result MakeResetResult(Result::Summary summary, int description)
48             { return Result(Result::LEVEL_RESET, summary, Result::MODULE_NN_DLP, description); }
MakeReInitResult(Result::Summary summary,int description)49         inline Result MakeReInitResult(Result::Summary summary, int description)
50             { return Result(Result::LEVEL_REINIT, summary, Result::MODULE_NN_DLP, description); }
MakeUsageResult(Result::Summary summary,int description)51         inline Result MakeUsageResult(Result::Summary summary, int description)
52             { return Result(Result::LEVEL_USAGE, summary, Result::MODULE_NN_DLP, description); }
MakePermanentResult(Result::Summary summary,int description)53         inline Result MakePermanentResult(Result::Summary summary, int description)
54             { return Result(Result::LEVEL_PERMANENT, summary, Result::MODULE_NN_DLP, description); }
MakeTemporaryResult(Result::Summary summary,int description)55         inline Result MakeTemporaryResult(Result::Summary summary, int description)
56             { return Result(Result::LEVEL_TEMPORARY, summary, Result::MODULE_NN_DLP, description); }
MakeStatusResult(Result::Summary summary,int description)57         inline Result MakeStatusResult(Result::Summary summary, int description)
58             { return Result(Result::LEVEL_STATUS, summary, Result::MODULE_NN_DLP, description); }
59     }
60 
61     /*!--------------------------------------------------------------------------*
62         @brief      呼び出した関数の引数が範囲外にあることを意味するエラーを返します。
63         @return     エラーコードを返します。
64      *--------------------------------------------------------------------------*/
ResultArgumentOutOfRange()65     inline Result ResultArgumentOutOfRange()
66     {
67         return detail::MakeUsageResult(Result::SUMMARY_INVALID_ARGUMENT, Result::DESCRIPTION_OUT_OF_RANGE);
68     }
69 
70 
71     /*!--------------------------------------------------------------------------*
72         @brief      初期化に失敗したことを意味するエラーを返します。
73         @return     エラーコードを返します。
74     *--------------------------------------------------------------------------*/
ResultFailedToInitialize()75     inline Result ResultFailedToInitialize()
76     {
77         return detail::MakeFatalResult(Result::SUMMARY_INTERNAL, Result::DESCRIPTION_NOT_INITIALIZED);
78     }
79 
80 
81     /*!--------------------------------------------------------------------------*
82         @brief      下層の通信に関する処理が失敗したことを意味するエラーを返します。
83         @return     エラーコードを返します。
84     *--------------------------------------------------------------------------*/
ResultUnderLaidCommFailed()85     inline Result ResultUnderLaidCommFailed()
86     {
87         return detail::MakePermanentResult(Result::SUMMARY_INTERNAL, DESCRIPTION_UNDERLAID_COMM_FAILED);
88     }
89 
90 
91     /*!--------------------------------------------------------------------------*
92         @brief      関数の実行に必要なメモリが不足していることを意味するエラーを返します。
93         @return     エラーコードを返します。
94     *--------------------------------------------------------------------------*/
ResultOutOfMemory()95     inline Result ResultOutOfMemory()
96     {
97         return detail::MakeFatalResult(Result::SUMMARY_OUT_OF_RESOURCE, Result::DESCRIPTION_OUT_OF_MEMORY);
98     }
99 
100 
101     /*!--------------------------------------------------------------------------*
102         @brief      初期化関数を呼んだ際にすでに初期化されていることを意味するエラーを返します。
103         @return     エラーコードを返します。
104     *--------------------------------------------------------------------------*/
ResultAlreadyInitialized()105     inline Result ResultAlreadyInitialized()
106     {
107         return detail::MakeUsageResult( Result::SUMMARY_INVALID_STATE, Result::DESCRIPTION_ALREADY_INITIALIZED );
108     }
109 
110 
111     /*!--------------------------------------------------------------------------*
112         @brief      関数を実行すべき状態でないことを意味するエラーを返します。
113         @return     エラーコードを返します。
114     *--------------------------------------------------------------------------*/
ResultInvalidState()115     inline Result ResultInvalidState()
116     {
117         return detail:: MakeStatusResult(Result::SUMMARY_INVALID_STATE, DESCRIPTION_NO_DESCRIPTION);
118     }
119 
120 
121     /*!--------------------------------------------------------------------------*
122         @brief      指定されたデータがないことを意味するエラーを返します。
123         @return     エラーコードを返します。
124     *--------------------------------------------------------------------------*/
ResultNoData()125     inline Result ResultNoData()
126     {
127         return detail:: MakeStatusResult(Result::SUMMARY_NOT_FOUND, Result::DESCRIPTION_NO_DATA);
128     }
129 
130 
131     /*!--------------------------------------------------------------------------*
132         @brief      cia へのアクセスに何かしらの理由で失敗したことを意味するエラーを返します。
133         @return     エラーコードを返します。
134     *--------------------------------------------------------------------------*/
ResultFailedToAccessCia()135     inline Result ResultFailedToAccessCia()
136     {
137         return detail:: MakePermanentResult(Result::SUMMARY_INTERNAL, DESCRIPTION_CIA_ACCESS_FAILED);
138     }
139 
140 
141     /*!--------------------------------------------------------------------------*
142         @brief      cia のインポートに失敗したことを意味するエラーを返します。
143         @return     エラーコードを返します。
144     *--------------------------------------------------------------------------*/
ResultFailedToImportCia()145     inline Result ResultFailedToImportCia()
146     {
147         return detail:: MakeFatalResult(Result::SUMMARY_INTERNAL, DESCRIPTION_CIA_IMPORT_FAILED);
148     }
149 
150 
151     /*!--------------------------------------------------------------------------*
152         @brief      サポートしていない メディアタイプが使用されていることを意味するエラーを返します。
153         @return     エラーコードを返します。
154     *--------------------------------------------------------------------------*/
ResultInvalidMediaType()155     inline Result ResultInvalidMediaType()
156     {
157         return detail:: MakeUsageResult(Result::SUMMARY_NOT_SUPPORTED, DESCRIPTION_INVALID_MEDIA_TYPE);
158     }
159 
160     /*!--------------------------------------------------------------------------*
161         @brief      サーバ において 子機の CIA サイズが大きすぎることを意味するエラーを返します。
162         @return     エラーコードを返します。
163     *--------------------------------------------------------------------------*/
ResultCiaSizeTooLarge()164     inline Result ResultCiaSizeTooLarge()
165     {
166         return detail:: MakeFatalResult(Result::SUMMARY_NOT_SUPPORTED, Result::DESCRIPTION_TOO_LARGE);
167     }
168 
169     /*!--------------------------------------------------------------------------*
170         @brief      サーバ において 子機のリージョンと自身のリージョンが一致していことを意味するエラーを返します。
171         @return     エラーコードを返します。
172      *--------------------------------------------------------------------------*/
ResultInvalidRegion()173     inline Result ResultInvalidRegion()
174     {
175         return detail::MakeUsageResult(Result::SUMMARY_NOT_SUPPORTED, DESCRIPTION_INVALID_REGION);
176     }
177 
178 }
179 }
180 }
181 
182 #endif // __cplusplus
183 
184 #endif /* NN_DLP_CTR_DLP_RESULT_H_ */
185