1 /*---------------------------------------------------------------------------*
2   Project:  Horizon
3   File:     types.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 /* Please see man pages for details
17 
18 
19 
20 */
21 
22 #ifndef NN_TYPES_H_
23 #define NN_TYPES_H_
24 
25 
26 // TORIAEZU: Transition period provision
27 #ifdef  SDK_ASM
28     #define NN_SWITCH_INCLUDE_FROM_NON_C
29 #endif
30 
31 
32 #ifdef  NN_SWITCH_INCLUDE_FROM_NON_C
33 #else  // ifdef NN_SWITCH_INCLUDE_FROM_NON_C
34 
35 	#if !defined(_MSC_VER) || (_MSC_VER >= 1500)
36 	    #include <inttypes.h>
37 	#endif
38 
39     #include <stddef.h>
40     #include <stdarg.h>
41 
42     #ifndef __cplusplus
43         #include <stdbool.h>
44     #endif
45 
46 
47 //
48 //
49 //
50 
51     //
52     typedef unsigned char           u8;
53     //
54     typedef unsigned short int      u16;
55     //
56     typedef unsigned int            u32;
57     //
58     typedef unsigned long long int  u64;
59 
60     //
61     typedef signed char             s8;
62     //
63     typedef signed short int        s16;
64     //
65     typedef signed int              s32;
66     //
67     typedef signed long long int    s64;
68 
69     //
70     typedef intptr_t                sptr;
71     //
72     typedef uintptr_t               uptr;
73 
74     //
75     typedef char                    char8;
76     //
77     typedef wchar_t                 char16;
78 
79     typedef volatile u8             vu8;
80     typedef volatile u16            vu16;
81     typedef volatile u32            vu32;
82     typedef volatile u64            vu64;
83 
84     typedef volatile s8             vs8;
85     typedef volatile s16            vs16;
86     typedef volatile s32            vs32;
87     typedef volatile s64            vs64;
88 
89     //
90     typedef float                   f32;
91     //
92     typedef double                  f64;
93 
94     typedef volatile f32            vf32;
95     typedef volatile f64            vf64;
96 
97     //
98     typedef unsigned char           bit8;
99     //
100     typedef unsigned short          bit16;
101     //
102     typedef unsigned int            bit32;
103     //
104     typedef unsigned long long int  bit64;
105 
106 //
107 
108 
109     /*
110         Macros and types used with io_register_list_XX.h
111      */
112 
113     typedef u8      REGType8;
114     typedef u16     REGType16;
115     typedef u32     REGType32;
116     typedef u64     REGType64;
117 
118     typedef vu8     REGType8v;
119     typedef vu16    REGType16v;
120     typedef vu32    REGType32v;
121     typedef vu64    REGType64v;
122 
123     #ifdef __cplusplus
124     namespace nn
125     {
126         typedef bit64 ProgramID;    // TODO: Delete
127         typedef bit64 ProgramId;
128 
129         struct ProductCode
130         {
131             char    code[16];
132         };
133 
134         struct ProductInfo
135         {
136             char    productCode[16];
137             bit16   companyCode;
138             u16     remasterVersion;
139         };
140     }
141     #endif
142 
143     #if defined(SDK_128M) || defined(SDK_64M) || defined(SDK_WIN32)
144         typedef int     BOOL;
145         #define TRUE    1
146         #define FALSE   0
147 
148         typedef struct
149         {
150             u32 w[3];
151         }
152         u96;
153 
154         typedef struct
155         {
156             u32 w[4];
157         }
158         u128;
159 
160         typedef volatile u96    vu96;
161         typedef volatile u128   vu128;
162 
163         typedef u96     REGType96;
164         typedef u128    REGType128;
165         typedef vu96    REGType96v;
166         typedef vu128   REGType128v;
167     #endif
168 
169 #endif // ifdef NN_SWITCH_INCLUDE_FROM_NON_C else
170 
171 
172 /* NN_TYPES_H_ */
173 #endif
174