2 // This file is part of the aMule Project.
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 )
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
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
29 #ifndef USE_STD_STRING
30 #include <wx/string.h> // Needed for wxString and wxEmptyString
33 #include <list> // Needed for std::list
34 #include <vector> // Needed for std::vector
37 #ifndef __STDC_FORMAT_MACROS
38 #define __STDC_FORMAT_MACROS
41 #define LONGLONG(x) x##ll
42 #define ULONGLONG(x) x##llu
44 typedef unsigned __int8
uint8_t;
45 typedef unsigned __int16
uint16_t;
46 typedef unsigned __int32
uint32_t;
47 typedef unsigned __int64
uint64_t;
48 typedef signed __int8
int8_t;
49 typedef signed __int16
int16_t;
50 typedef signed __int32
int32_t;
51 typedef signed __int64
int64_t;
52 #define LONGLONG(x) x##i64
53 #define ULONGLONG(x) x##ui64
56 // These are _MSC_VER defines used in eMule. They should
57 // not be used in aMule, instead, use this table to
58 // find the type to use in order to get the desired
60 //////////////////////////////////////////////////
61 // Name // Type To Use In Amule //
62 //////////////////////////////////////////////////
67 // UINT_PTR // uint32* //
68 // PUINT // uint32* //
71 // ULONG // unsigned long //
72 // LONGLONG // long long //
73 // ULONGLONG // unsigned long long //
78 // LPCVOID // const void* //
81 // LPCSTR // const char* //
84 // LPCTSTR // const char* //
85 // WCHAR // wchar_t //
86 // LPWSTR // wchar_t* //
87 // LPCWSTR // const wchar_t* //
88 // WPARAM // uint16 //
89 // LPARAM // uint32 //
90 // POINT // wxPoint //
91 //////////////////////////////////////////////////
94 * Backwards compatibility with emule.
95 * Note that the int* types are indeed unsigned.
98 typedef uint8_t uint8
;
99 typedef uint16_t int16
;
100 typedef uint16_t uint16
;
101 typedef uint32_t int32
;
102 typedef uint32_t uint32
;
103 typedef uint64_t int64
;
104 typedef uint64_t uint64
;
105 typedef int8_t sint8
;
106 typedef int16_t sint16
;
107 typedef int32_t sint32
;
108 typedef int64_t sint64
;
113 //! Various common list-types.
115 #ifndef USE_STD_STRING
116 typedef std::list
<wxString
> CStringList
;
118 typedef std::list
<CKnownFile
*> CKnownFilePtrList
;
121 typedef std::vector
<uint8
> ArrayOfUInts8
;
122 typedef std::vector
<uint16
> ArrayOfUInts16
;
123 typedef std::vector
<uint32
> ArrayOfUInts32
;
124 typedef std::vector
<uint64
> ArrayOfUInts64
;
126 typedef std::list
<uint32
> ListOfUInts32
;
128 /* This is the Evil Void String For Returning On Const References From Hell */
129 // IT MEANS I WANT TO USE IT EVERYWHERE. DO NOT MOVE IT.
130 // THE FACT SOMETHING IS USED IN JUST ONE PLACE DOESN'T MEAN IT HAS
131 // TO BE MOVED TO THAT PLACE. I MIGHT NEED IT ELSEWHERE LATER.
134 #ifndef USE_STD_STRING
135 static const wxString EmptyString
= wxEmptyString
;
143 #ifdef _WIN32 // Used in non-wx-apps too (ed2k), so don't use __WINDOWS__ here !
147 #include <windows.h> // Needed for RECT // Do_not_auto_remove
148 // Windows compilers don't have these constants
152 F_OK
= 0, // test for existence
153 X_OK
= 1, // execute permission
159 #include <wx/msw/winundef.h> // Do_not_auto_remove
163 typedef struct sRECT
{
173 // File_checked_for_headers