Mercurial > hg
annotate mercurial/compat.h @ 50599:921a72735482
safehasattr: pass attribute name as string instead of bytes
This is a step toward replacing `util.safehasattr` usage with plain `hasattr`.
The builtin function behave poorly in Python2 but this was fixed in Python3.
These change are done one by one as they tend to have a small odd to trigger
puzzling breackage.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Thu, 02 Feb 2023 17:35:38 +0100 |
parents | d86908050375 |
children |
rev | line source |
---|---|
48274
d86908050375
hg: remove reserved identifiers
David Demelier <markand@malikania.fr>
parents:
39610
diff
changeset
|
1 #ifndef HG_COMPAT_H |
d86908050375
hg: remove reserved identifiers
David Demelier <markand@malikania.fr>
parents:
39610
diff
changeset
|
2 #define HG_COMPAT_H |
29444
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
3 |
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
4 #ifdef _WIN32 |
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
5 #ifdef _MSC_VER |
39610
11ed2eadf937
cext: fix warnings when building for py3 on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
33926
diff
changeset
|
6 #if _MSC_VER < 1900 |
29444
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
7 /* msvc 6.0 has problems */ |
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
8 #define inline __inline |
29521
83147ff53112
compat: provide a declaration of ssize_t, for MS windows
Maciej Fijalkowski <fijall@gmail.com>
parents:
29444
diff
changeset
|
9 #if defined(_WIN64) |
83147ff53112
compat: provide a declaration of ssize_t, for MS windows
Maciej Fijalkowski <fijall@gmail.com>
parents:
29444
diff
changeset
|
10 typedef __int64 ssize_t; |
33926
f4433f2713d0
encoding: add function to test if a str consists of ASCII characters
Yuya Nishihara <yuya@tcha.org>
parents:
29549
diff
changeset
|
11 typedef unsigned __int64 uintptr_t; |
29521
83147ff53112
compat: provide a declaration of ssize_t, for MS windows
Maciej Fijalkowski <fijall@gmail.com>
parents:
29444
diff
changeset
|
12 #else |
29549
7b22599dcb85
compat: define ssize_t as int on 32bit Windows, silences C4142 warning
Yuya Nishihara <yuya@tcha.org>
parents:
29521
diff
changeset
|
13 typedef int ssize_t; |
33926
f4433f2713d0
encoding: add function to test if a str consists of ASCII characters
Yuya Nishihara <yuya@tcha.org>
parents:
29549
diff
changeset
|
14 typedef unsigned int uintptr_t; |
29521
83147ff53112
compat: provide a declaration of ssize_t, for MS windows
Maciej Fijalkowski <fijall@gmail.com>
parents:
29444
diff
changeset
|
15 #endif |
29444
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
16 typedef signed char int8_t; |
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
17 typedef short int16_t; |
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
18 typedef long int32_t; |
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
19 typedef __int64 int64_t; |
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
20 typedef unsigned char uint8_t; |
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
21 typedef unsigned short uint16_t; |
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
22 typedef unsigned long uint32_t; |
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
23 typedef unsigned __int64 uint64_t; |
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
24 #else |
39610
11ed2eadf937
cext: fix warnings when building for py3 on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
33926
diff
changeset
|
25 /* VC++ 14 */ |
11ed2eadf937
cext: fix warnings when building for py3 on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
33926
diff
changeset
|
26 #include <stdint.h> |
11ed2eadf937
cext: fix warnings when building for py3 on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
33926
diff
changeset
|
27 |
11ed2eadf937
cext: fix warnings when building for py3 on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
33926
diff
changeset
|
28 #if defined(_WIN64) |
11ed2eadf937
cext: fix warnings when building for py3 on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
33926
diff
changeset
|
29 typedef __int64 ssize_t; |
11ed2eadf937
cext: fix warnings when building for py3 on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
33926
diff
changeset
|
30 #else |
11ed2eadf937
cext: fix warnings when building for py3 on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
33926
diff
changeset
|
31 typedef int ssize_t; |
11ed2eadf937
cext: fix warnings when building for py3 on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
33926
diff
changeset
|
32 #endif |
11ed2eadf937
cext: fix warnings when building for py3 on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
33926
diff
changeset
|
33 #endif /* _MSC_VER < 1900 */ |
11ed2eadf937
cext: fix warnings when building for py3 on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
33926
diff
changeset
|
34 |
11ed2eadf937
cext: fix warnings when building for py3 on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
33926
diff
changeset
|
35 #else |
11ed2eadf937
cext: fix warnings when building for py3 on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
33926
diff
changeset
|
36 /* not msvc */ |
29444
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
37 #include <stdint.h> |
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
38 #endif |
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
39 #else |
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
40 /* not windows */ |
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
41 #include <sys/types.h> |
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
42 #if defined __BEOS__ && !defined __HAIKU__ |
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
43 #include <ByteOrder.h> |
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
44 #else |
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
45 #include <arpa/inet.h> |
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
46 #endif |
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
47 #include <inttypes.h> |
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
48 #endif |
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
49 |
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
50 #if defined __hpux || defined __SUNPRO_C || defined _AIX |
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
51 #define inline |
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
52 #endif |
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
53 |
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
54 #ifdef __linux |
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
55 #define inline __inline |
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
56 #endif |
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
57 |
284d742e5611
internals: move the bitmanipulation routines into its own file
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
58 #endif |