Update Wiki URL
[amule.git] / src / Types.h
blobf6d981429bfdd42f3f43083b4134e4a66c09880b
1 //
2 // This file is part of the aMule Project.
3 //
4 // Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org )
5 // Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net )
6 //
7 // Any parts of this program derived from the xMule, lMule or eMule project,
8 // or contributed by third-party developers are copyrighted by their
9 // respective authors.
11 // This program is free software; you can redistribute it and/or modify
12 // it under the terms of the GNU General Public License as published by
13 // the Free Software Foundation; either version 2 of the License, or
14 // (at your option) any later version.
16 // This program is distributed in the hope that it will be useful,
17 // but WITHOUT ANY WARRANTY; without even the implied warranty of
18 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 // GNU General Public License for more details.
21 // You should have received a copy of the GNU General Public License
22 // along with this program; if not, write to the Free Software
23 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
26 #ifndef TYPES_H
27 #define TYPES_H
29 #ifndef USE_STD_STRING
30 #include <wx/string.h> // Needed for wxString and wxEmptyString
31 #endif
33 #include <list> // Needed for std::list
34 #include <vector> // Needed for std::vector
36 #ifndef _MSC_VER
37 #ifndef __STDC_FORMAT_MACROS
38 #define __STDC_FORMAT_MACROS
39 #endif
40 #include <inttypes.h>
41 #define LONGLONG(x) x##ll
42 #define ULONGLONG(x) x##llu
43 #else
44 typedef unsigned __int8 byte;
45 typedef unsigned __int8 uint8_t;
46 typedef unsigned __int16 uint16_t;
47 typedef unsigned __int32 uint32_t;
48 typedef unsigned __int64 uint64_t;
49 typedef signed __int8 int8_t;
50 typedef signed __int16 int16_t;
51 typedef signed __int32 int32_t;
52 typedef signed __int64 int64_t;
53 #define LONGLONG(x) x##i64
54 #define ULONGLONG(x) x##ui64
55 #endif
57 // These are _MSC_VER defines used in eMule. They should
58 // not be used in aMule, instead, use this table to
59 // find the type to use in order to get the desired
60 // effect.
61 //////////////////////////////////////////////////
62 // Name // Type To Use In Amule //
63 //////////////////////////////////////////////////
64 // BOOL // bool //
65 // WORD // uint16 //
66 // INT // int32 //
67 // UINT // uint32 //
68 // UINT_PTR // uint32* //
69 // PUINT // uint32* //
70 // DWORD // uint32 //
71 // LONG // long //
72 // ULONG // unsigned long //
73 // LONGLONG // long long //
74 // ULONGLONG // unsigned long long //
75 // LPBYTE // char* //
76 // VOID // void //
77 // PVOID // void* //
78 // LPVOID // void* //
79 // LPCVOID // const void* //
80 // CHAR // char //
81 // LPSTR // char* //
82 // LPCSTR // const char* //
83 // TCHAR // char //
84 // LPTSTR // char* //
85 // LPCTSTR // const char* //
86 // WCHAR // wchar_t //
87 // LPWSTR // wchar_t* //
88 // LPCWSTR // const wchar_t* //
89 // WPARAM // uint16 //
90 // LPARAM // uint32 //
91 // POINT // wxPoint //
92 //////////////////////////////////////////////////
95 * Backwards compatibility with emule.
96 * Note that the int* types are indeed unsigned.
98 typedef uint8_t int8;
99 typedef uint8_t uint8;
100 typedef uint16_t int16;
101 typedef uint16_t uint16;
102 typedef uint32_t int32;
103 typedef uint32_t uint32;
104 typedef uint64_t int64;
105 typedef uint64_t uint64;
106 typedef int8_t sint8;
107 typedef int16_t sint16;
108 typedef int32_t sint32;
109 typedef int64_t sint64;
110 typedef uint8_t byte;
113 class CKnownFile;
115 //! Various common list-types.
116 //@{
117 #ifndef USE_STD_STRING
118 typedef std::list<wxString> CStringList;
119 #endif
120 typedef std::list<CKnownFile*> CKnownFilePtrList;
121 //@}
123 typedef std::vector<uint8> ArrayOfUInts8;
124 typedef std::vector<uint16> ArrayOfUInts16;
125 typedef std::vector<uint32> ArrayOfUInts32;
126 typedef std::vector<uint64> ArrayOfUInts64;
128 typedef std::list<uint32> ListOfUInts32;
130 /* This is the Evil Void String For Returning On Const References From Hell */
131 // IT MEANS I WANT TO USE IT EVERYWHERE. DO NOT MOVE IT.
132 // THE FACT SOMETHING IS USED IN JUST ONE PLACE DOESN'T MEAN IT HAS
133 // TO BE MOVED TO THAT PLACE. I MIGHT NEED IT ELSEWHERE LATER.
136 #ifndef USE_STD_STRING
137 static const wxString EmptyString = wxEmptyString;
138 #endif
140 #ifndef __cplusplus
141 typedef int bool;
142 #endif
145 #ifdef _WIN32 // Used in non-wx-apps too (ed2k), so don't use __WINDOWS__ here !
146 #ifndef NOMINMAX
147 #define NOMINMAX
148 #endif
149 #include <windows.h> // Needed for RECT // Do_not_auto_remove
150 // Windows compilers don't have these constants
151 #ifndef W_OK
152 enum
154 F_OK = 0, // test for existence
155 X_OK = 1, // execute permission
156 W_OK = 2, // write
157 R_OK = 4 // read
159 #endif // W_OK
160 #ifdef __WINDOWS__
161 #include <wx/msw/winundef.h> // Do_not_auto_remove
162 #endif
163 #undef GetUserName
164 #else // _WIN32
165 typedef struct sRECT {
166 uint32 left;
167 uint32 top;
168 uint32 right;
169 uint32 bottom;
170 } RECT;
171 #endif /* _WIN32 */
174 #endif /* TYPES_H */
175 // File_checked_for_headers