1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     ro_Result.h
4 
5   Copyright (C)2009-2012 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: 46347 $
14  *---------------------------------------------------------------------------*/
15 
16 #ifndef NN_RO_RO_RESULT_H_
17 #define NN_RO_RO_RESULT_H_
18 
19 #include <nn/Handle.h>
20 #include <nn/Result.h>
21 #include <nn/types.h>
22 
23 
24 
25 namespace nn {
26 namespace ro {
27 
28     enum Description
29     {
30         DESCRIPTION_ALREADY_LOADED = 1,
31         DESCRIPTION_ATEXIT_NOT_FOUND,
32         DESCRIPTION_BROKEN_OBJECT,
33         DESCRIPTION_CONTROL_OBJECT_NOT_FOUND,
34         DESCRIPTION_EIT_NODE_NOT_FOUND,
35         DESCRIPTION_INVALID_LIST,
36         DESCRIPTION_INVALID_OFFSET_RANGE,
37         DESCRIPTION_INVALID_REGION,
38         DESCRIPTION_INVALID_SIGN,
39         DESCRIPTION_INVALID_SIGN2,
40         DESCRIPTION_INVALID_STRING,
41         DESCRIPTION_INVALID_TARGET,
42         DESCRIPTION_NOT_LOADED,
43         DESCRIPTION_NOT_REGISTERED,
44         DESCRIPTION_OUT_OF_SPACE,
45         DESCRIPTION_RANGE_ERROR_AT_EXPORT,
46         DESCRIPTION_RANGE_ERROR_AT_HEADER,
47         DESCRIPTION_RANGE_ERROR_AT_IMPORT,
48         DESCRIPTION_RANGE_ERROR_AT_INDEX_EXPORT,
49         DESCRIPTION_RANGE_ERROR_AT_INDEX_IMPORT,
50         DESCRIPTION_RANGE_ERROR_AT_INTERNAL_RELOCATION,
51         DESCRIPTION_RANGE_ERROR_AT_OFFSET_EXPORT,
52         DESCRIPTION_RANGE_ERROR_AT_OFFSET_IMPORT,
53         DESCRIPTION_RANGE_ERROR_AT_REFERENCE,
54         DESCRIPTION_RANGE_ERROR_AT_SECTION,
55         DESCRIPTION_RANGE_ERROR_AT_SYMBOL_EXPORT,
56         DESCRIPTION_RANGE_ERROR_AT_SYMBOL_IMPORT,
57         DESCRIPTION_REGISTRATION_NOT_FOUND,
58         DESCRIPTION_RW_NOT_SUPPORTED,
59         DESCRIPTION_STATIC_MODULE,
60         DESCRIPTION_TOO_SMALL_SIZE,
61         DESCRIPTION_TOO_SMALL_TARGET,
62         DESCRIPTION_UNKNOWN_OBJECT_CONTROL,
63         DESCRIPTION_UNKNOWN_RELOCATION_TYPE,
64         DESCRIPTION_VENEER_REQUIRED,
65         DESCRIPTION_VERIFICATION_FAILED,
66 
67         DESCRIPTION_MAX_BIT = (1u << 31)
68     };
69 
70 
71 #define NN_RO_DEFINE_RESULT_CONST(name, level, summary, description) NN_DEFINE_RESULT_CONST(name, Result::LEVEL_##level, Result::SUMMARY_##summary, Result::MODULE_NN_RO, description)
72     NN_RO_DEFINE_RESULT_CONST( ResultAlreadyInitialized,               USAGE,     INVALID_STATE,    Result::DESCRIPTION_ALREADY_INITIALIZED        );
73     NN_RO_DEFINE_RESULT_CONST( ResultAlreadyInitializedInternal,       PERMANENT, INTERNAL,         Result::DESCRIPTION_ALREADY_INITIALIZED        );
74     NN_RO_DEFINE_RESULT_CONST( ResultAtexitNotFound,                   PERMANENT, INVALID_ARGUMENT, DESCRIPTION_ATEXIT_NOT_FOUND                   );
75     NN_RO_DEFINE_RESULT_CONST( ResultBrokenObject,                     PERMANENT, INVALID_ARGUMENT, DESCRIPTION_BROKEN_OBJECT                      );
76     NN_RO_DEFINE_RESULT_CONST( ResultControlObjectNotFound,            PERMANENT, INVALID_ARGUMENT, DESCRIPTION_CONTROL_OBJECT_NOT_FOUND           );
77     NN_RO_DEFINE_RESULT_CONST( ResultEitNodeNotFound,                  STATUS,    INTERNAL,         DESCRIPTION_EIT_NODE_NOT_FOUND                 );
78     NN_RO_DEFINE_RESULT_CONST( ResultInvalidHandle,                    USAGE,     INTERNAL,         Result::DESCRIPTION_INVALID_HANDLE             );
79     NN_RO_DEFINE_RESULT_CONST( ResultInvalidList,                      PERMANENT, WRONG_ARGUMENT,   DESCRIPTION_INVALID_LIST                       );
80     NN_RO_DEFINE_RESULT_CONST( ResultInvalidRegion,                    PERMANENT, INVALID_STATE,    DESCRIPTION_INVALID_REGION                     );
81     NN_RO_DEFINE_RESULT_CONST( ResultInvalidSize,                      PERMANENT, WRONG_ARGUMENT,   Result::DESCRIPTION_INVALID_SIZE               );
82     NN_RO_DEFINE_RESULT_CONST( ResultInvalidString,                    PERMANENT, WRONG_ARGUMENT,   DESCRIPTION_INVALID_STRING                     );
83     NN_RO_DEFINE_RESULT_CONST( ResultInvalidTarget,                    USAGE,     INVALID_ARGUMENT, DESCRIPTION_INVALID_TARGET                     );
84     NN_RO_DEFINE_RESULT_CONST( ResultMissAlignedAddress,               PERMANENT, WRONG_ARGUMENT,   Result::DESCRIPTION_MISALIGNED_ADDRESS         );
85     NN_RO_DEFINE_RESULT_CONST( ResultMissAlignedSize,                  PERMANENT, WRONG_ARGUMENT,   Result::DESCRIPTION_MISALIGNED_SIZE            );
86     NN_RO_DEFINE_RESULT_CONST( ResultNotAuthorized,                    PERMANENT, WRONG_ARGUMENT,   Result::DESCRIPTION_NOT_AUTHORIZED             );
87     NN_RO_DEFINE_RESULT_CONST( ResultNotInitialized,                   USAGE,     INVALID_STATE,    Result::DESCRIPTION_NOT_INITIALIZED            );
88     NN_RO_DEFINE_RESULT_CONST( ResultNotInitializedInternal,           PERMANENT, INTERNAL,         Result::DESCRIPTION_NOT_INITIALIZED            );
89     NN_RO_DEFINE_RESULT_CONST( ResultNotLoaded,                        PERMANENT, INVALID_STATE,    DESCRIPTION_NOT_LOADED                         );
90     NN_RO_DEFINE_RESULT_CONST( ResultNotRegistered,                    PERMANENT, INVALID_ARGUMENT, DESCRIPTION_NOT_REGISTERED                     );
91     NN_RO_DEFINE_RESULT_CONST( ResultOutOfSpace,                       USAGE,     INTERNAL,         DESCRIPTION_OUT_OF_SPACE                       );
92     NN_RO_DEFINE_RESULT_CONST( ResultRangeErrorAtExport,               PERMANENT, WRONG_ARGUMENT,   DESCRIPTION_RANGE_ERROR_AT_EXPORT              );
93     NN_RO_DEFINE_RESULT_CONST( ResultRangeErrorAtHeader,               PERMANENT, WRONG_ARGUMENT,   DESCRIPTION_RANGE_ERROR_AT_HEADER              );
94     NN_RO_DEFINE_RESULT_CONST( ResultRangeErrorAtImport,               PERMANENT, WRONG_ARGUMENT,   DESCRIPTION_RANGE_ERROR_AT_IMPORT              );
95     NN_RO_DEFINE_RESULT_CONST( ResultRangeErrorAtIndexExport,          PERMANENT, WRONG_ARGUMENT,   DESCRIPTION_RANGE_ERROR_AT_INDEX_EXPORT        );
96     NN_RO_DEFINE_RESULT_CONST( ResultRangeErrorAtIndexImport,          PERMANENT, WRONG_ARGUMENT,   DESCRIPTION_RANGE_ERROR_AT_INDEX_IMPORT        );
97     NN_RO_DEFINE_RESULT_CONST( ResultRangeErrorAtInternalRelocation,   PERMANENT, WRONG_ARGUMENT,   DESCRIPTION_RANGE_ERROR_AT_INTERNAL_RELOCATION );
98     NN_RO_DEFINE_RESULT_CONST( ResultRangeErrorAtOffsetExport,         PERMANENT, WRONG_ARGUMENT,   DESCRIPTION_RANGE_ERROR_AT_OFFSET_EXPORT       );
99     NN_RO_DEFINE_RESULT_CONST( ResultRangeErrorAtOffsetImport,         PERMANENT, WRONG_ARGUMENT,   DESCRIPTION_RANGE_ERROR_AT_OFFSET_IMPORT       );
100     NN_RO_DEFINE_RESULT_CONST( ResultRangeErrorAtReference,            PERMANENT, WRONG_ARGUMENT,   DESCRIPTION_RANGE_ERROR_AT_REFERENCE           );
101     NN_RO_DEFINE_RESULT_CONST( ResultRangeErrorAtSection,              PERMANENT, WRONG_ARGUMENT,   DESCRIPTION_RANGE_ERROR_AT_SECTION             );
102     NN_RO_DEFINE_RESULT_CONST( ResultRangeErrorAtSymbolExport,         PERMANENT, WRONG_ARGUMENT,   DESCRIPTION_RANGE_ERROR_AT_SYMBOL_EXPORT       );
103     NN_RO_DEFINE_RESULT_CONST( ResultRangeErrorAtSymbolImport,         PERMANENT, WRONG_ARGUMENT,   DESCRIPTION_RANGE_ERROR_AT_SYMBOL_IMPORT       );
104     NN_RO_DEFINE_RESULT_CONST( ResultRegistrationNotFound,             PERMANENT, INVALID_ARGUMENT, DESCRIPTION_REGISTRATION_NOT_FOUND             );
105     NN_RO_DEFINE_RESULT_CONST( ResultRwNotSupported,                   USAGE,     INTERNAL,         DESCRIPTION_RW_NOT_SUPPORTED                   );
106     NN_RO_DEFINE_RESULT_CONST( ResultStaticModule,                     PERMANENT, WRONG_ARGUMENT,   DESCRIPTION_STATIC_MODULE                      );
107     NN_RO_DEFINE_RESULT_CONST( ResultTooSmallSize,                     USAGE,     INVALID_ARGUMENT, DESCRIPTION_TOO_SMALL_SIZE                     );
108     NN_RO_DEFINE_RESULT_CONST( ResultTooSmallTarget,                   USAGE,     INVALID_ARGUMENT, DESCRIPTION_TOO_SMALL_TARGET                   );
109     NN_RO_DEFINE_RESULT_CONST( ResultUnknownObjectControl,             PERMANENT, INVALID_ARGUMENT, DESCRIPTION_UNKNOWN_OBJECT_CONTROL             );
110     NN_RO_DEFINE_RESULT_CONST( ResultUnknownRelocationType,            PERMANENT, WRONG_ARGUMENT,   DESCRIPTION_UNKNOWN_RELOCATION_TYPE            );
111     NN_RO_DEFINE_RESULT_CONST( ResultVeneerRequired,                   PERMANENT, WRONG_ARGUMENT,   DESCRIPTION_VENEER_REQUIRED                    );
112     NN_RO_DEFINE_RESULT_CONST( ResultVerificationFailed,               PERMANENT, WRONG_ARGUMENT,   DESCRIPTION_VERIFICATION_FAILED                );
113 #undef NN_RO_DEFINE_RESULT_CONST
114 
115 
116 
117 } // end of namespace ro
118 } // end of namespace nn
119 
120 
121 
122 #endif  // ifndef NN_RO_RO_RESULT_H_
123