Mercurial > hg
annotate mercurial/util.h @ 26847:9f16787cbefd
util: drop Python 2.4 compat by directly importing md5 and sha1
There's been a fair amount of cruft here over the years, which we can all
just get rid of now.
author | Siddharth Agarwal <sid0@fb.com> |
---|---|
date | Sat, 24 Oct 2015 15:56:16 -0700 |
parents | 14bf7679fb68 |
children | 284d742e5611 |
rev | line source |
---|---|
11358
4494fb02d549
util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff
changeset
|
1 /* |
4494fb02d549
util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff
changeset
|
2 util.h - utility functions for interfacing with the various python APIs. |
4494fb02d549
util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff
changeset
|
3 |
4494fb02d549
util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff
changeset
|
4 This software may be used and distributed according to the terms of |
4494fb02d549
util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff
changeset
|
5 the GNU General Public License, incorporated herein by reference. |
4494fb02d549
util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff
changeset
|
6 */ |
4494fb02d549
util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff
changeset
|
7 |
4494fb02d549
util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff
changeset
|
8 #ifndef _HG_UTIL_H_ |
4494fb02d549
util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff
changeset
|
9 #define _HG_UTIL_H_ |
4494fb02d549
util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff
changeset
|
10 |
4494fb02d549
util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff
changeset
|
11 #if PY_MAJOR_VERSION >= 3 |
4494fb02d549
util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff
changeset
|
12 |
4494fb02d549
util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff
changeset
|
13 #define IS_PY3K |
4494fb02d549
util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff
changeset
|
14 #define PyInt_FromLong PyLong_FromLong |
11534
9777a3b19efe
util.h: Add a PyInt_AsLong definition for usage in the inotify module.
Renato Cunha <renatoc@gmail.com>
parents:
11358
diff
changeset
|
15 #define PyInt_AsLong PyLong_AsLong |
11358
4494fb02d549
util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff
changeset
|
16 |
11535
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
17 /* |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
18 Mapping of some of the python < 2.x PyString* functions to py3k's PyUnicode. |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
19 |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
20 The commented names below represent those that are present in the PyBytes |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
21 definitions for python < 2.6 (below in this file) that don't have a direct |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
22 implementation. |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
23 */ |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
24 |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
25 #define PyStringObject PyUnicodeObject |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
26 #define PyString_Type PyUnicode_Type |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
27 |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
28 #define PyString_Check PyUnicode_Check |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
29 #define PyString_CheckExact PyUnicode_CheckExact |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
30 #define PyString_CHECK_INTERNED PyUnicode_CHECK_INTERNED |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
31 #define PyString_AS_STRING PyUnicode_AsLatin1String |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
32 #define PyString_GET_SIZE PyUnicode_GET_SIZE |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
33 |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
34 #define PyString_FromStringAndSize PyUnicode_FromStringAndSize |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
35 #define PyString_FromString PyUnicode_FromString |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
36 #define PyString_FromFormatV PyUnicode_FromFormatV |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
37 #define PyString_FromFormat PyUnicode_FromFormat |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
38 /* #define PyString_Size PyUnicode_GET_SIZE */ |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
39 /* #define PyString_AsString */ |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
40 /* #define PyString_Repr */ |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
41 #define PyString_Concat PyUnicode_Concat |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
42 #define PyString_ConcatAndDel PyUnicode_AppendAndDel |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
43 #define _PyString_Resize PyUnicode_Resize |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
44 /* #define _PyString_Eq */ |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
45 #define PyString_Format PyUnicode_Format |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
46 /* #define _PyString_FormatLong */ |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
47 /* #define PyString_DecodeEscape */ |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
48 #define _PyString_Join PyUnicode_Join |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
49 #define PyString_Decode PyUnicode_Decode |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
50 #define PyString_Encode PyUnicode_Encode |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
51 #define PyString_AsEncodedObject PyUnicode_AsEncodedObject |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
52 #define PyString_AsEncodedString PyUnicode_AsEncodedString |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
53 #define PyString_AsDecodedObject PyUnicode_AsDecodedObject |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
54 #define PyString_AsDecodedString PyUnicode_AsDecodedUnicode |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
55 /* #define PyString_AsStringAndSize */ |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
56 #define _PyString_InsertThousandsGrouping _PyUnicode_InsertThousandsGrouping |
09cb56b760b4
util.h: Defined macros for working "with" PyStrings in py3k.
Renato Cunha <renatoc@gmail.com>
parents:
11534
diff
changeset
|
57 |
11358
4494fb02d549
util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff
changeset
|
58 #endif /* PY_MAJOR_VERSION */ |
4494fb02d549
util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff
changeset
|
59 |
16385
e501f45b0eba
util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents:
16384
diff
changeset
|
60 #ifdef _WIN32 |
e501f45b0eba
util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents:
16384
diff
changeset
|
61 #ifdef _MSC_VER |
e501f45b0eba
util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents:
16384
diff
changeset
|
62 /* msvc 6.0 has problems */ |
e501f45b0eba
util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents:
16384
diff
changeset
|
63 #define inline __inline |
19723
7999f4fa155a
util.h: add stdint basic type definitions
Wei, Elson <elson.wei@gmail.com>
parents:
17616
diff
changeset
|
64 typedef signed char int8_t; |
7999f4fa155a
util.h: add stdint basic type definitions
Wei, Elson <elson.wei@gmail.com>
parents:
17616
diff
changeset
|
65 typedef short int16_t; |
7999f4fa155a
util.h: add stdint basic type definitions
Wei, Elson <elson.wei@gmail.com>
parents:
17616
diff
changeset
|
66 typedef long int32_t; |
7999f4fa155a
util.h: add stdint basic type definitions
Wei, Elson <elson.wei@gmail.com>
parents:
17616
diff
changeset
|
67 typedef __int64 int64_t; |
17616
9535a0dc41f2
store: implement fncache basic path encoding in C
Bryan O'Sullivan <bryano@fb.com>
parents:
16629
diff
changeset
|
68 typedef unsigned char uint8_t; |
19723
7999f4fa155a
util.h: add stdint basic type definitions
Wei, Elson <elson.wei@gmail.com>
parents:
17616
diff
changeset
|
69 typedef unsigned short uint16_t; |
16385
e501f45b0eba
util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents:
16384
diff
changeset
|
70 typedef unsigned long uint32_t; |
e501f45b0eba
util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents:
16384
diff
changeset
|
71 typedef unsigned __int64 uint64_t; |
e501f45b0eba
util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents:
16384
diff
changeset
|
72 #else |
e501f45b0eba
util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents:
16384
diff
changeset
|
73 #include <stdint.h> |
e501f45b0eba
util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents:
16384
diff
changeset
|
74 #endif |
e501f45b0eba
util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents:
16384
diff
changeset
|
75 #else |
e501f45b0eba
util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents:
16384
diff
changeset
|
76 /* not windows */ |
e501f45b0eba
util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents:
16384
diff
changeset
|
77 #include <sys/types.h> |
e501f45b0eba
util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents:
16384
diff
changeset
|
78 #if defined __BEOS__ && !defined __HAIKU__ |
e501f45b0eba
util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents:
16384
diff
changeset
|
79 #include <ByteOrder.h> |
e501f45b0eba
util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents:
16384
diff
changeset
|
80 #else |
e501f45b0eba
util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents:
16384
diff
changeset
|
81 #include <arpa/inet.h> |
e501f45b0eba
util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents:
16384
diff
changeset
|
82 #endif |
e501f45b0eba
util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents:
16384
diff
changeset
|
83 #include <inttypes.h> |
e501f45b0eba
util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents:
16384
diff
changeset
|
84 #endif |
e501f45b0eba
util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents:
16384
diff
changeset
|
85 |
e501f45b0eba
util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents:
16384
diff
changeset
|
86 #if defined __hpux || defined __SUNPRO_C || defined _AIX |
e501f45b0eba
util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents:
16384
diff
changeset
|
87 #define inline |
e501f45b0eba
util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents:
16384
diff
changeset
|
88 #endif |
e501f45b0eba
util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents:
16384
diff
changeset
|
89 |
e501f45b0eba
util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents:
16384
diff
changeset
|
90 #ifdef __linux |
e501f45b0eba
util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents:
16384
diff
changeset
|
91 #define inline __inline |
e501f45b0eba
util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents:
16384
diff
changeset
|
92 #endif |
e501f45b0eba
util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents:
16384
diff
changeset
|
93 |
21809
e250b8300e6e
parsers: inline fields of dirstate values in C version
Siddharth Agarwal <sid0@fb.com>
parents:
19833
diff
changeset
|
94 typedef struct { |
e250b8300e6e
parsers: inline fields of dirstate values in C version
Siddharth Agarwal <sid0@fb.com>
parents:
19833
diff
changeset
|
95 PyObject_HEAD |
e250b8300e6e
parsers: inline fields of dirstate values in C version
Siddharth Agarwal <sid0@fb.com>
parents:
19833
diff
changeset
|
96 char state; |
e250b8300e6e
parsers: inline fields of dirstate values in C version
Siddharth Agarwal <sid0@fb.com>
parents:
19833
diff
changeset
|
97 int mode; |
e250b8300e6e
parsers: inline fields of dirstate values in C version
Siddharth Agarwal <sid0@fb.com>
parents:
19833
diff
changeset
|
98 int size; |
e250b8300e6e
parsers: inline fields of dirstate values in C version
Siddharth Agarwal <sid0@fb.com>
parents:
19833
diff
changeset
|
99 int mtime; |
e250b8300e6e
parsers: inline fields of dirstate values in C version
Siddharth Agarwal <sid0@fb.com>
parents:
19833
diff
changeset
|
100 } dirstateTupleObject; |
e250b8300e6e
parsers: inline fields of dirstate values in C version
Siddharth Agarwal <sid0@fb.com>
parents:
19833
diff
changeset
|
101 |
21838
0022ee690446
util.h: declare dirstateTupleType variable instead of defining it
André Sintzoff <andre.sintzoff@gmail.com>
parents:
21809
diff
changeset
|
102 extern PyTypeObject dirstateTupleType; |
21809
e250b8300e6e
parsers: inline fields of dirstate values in C version
Siddharth Agarwal <sid0@fb.com>
parents:
19833
diff
changeset
|
103 #define dirstate_tuple_check(op) (Py_TYPE(op) == &dirstateTupleType) |
e250b8300e6e
parsers: inline fields of dirstate values in C version
Siddharth Agarwal <sid0@fb.com>
parents:
19833
diff
changeset
|
104 |
16437
d126a0d16856
util.h: replace ntohl/htonl with get/putbe32
Matt Mackall <mpm@selenic.com>
parents:
16393
diff
changeset
|
105 static inline uint32_t getbe32(const char *c) |
d126a0d16856
util.h: replace ntohl/htonl with get/putbe32
Matt Mackall <mpm@selenic.com>
parents:
16393
diff
changeset
|
106 { |
d126a0d16856
util.h: replace ntohl/htonl with get/putbe32
Matt Mackall <mpm@selenic.com>
parents:
16393
diff
changeset
|
107 const unsigned char *d = (const unsigned char *)c; |
d126a0d16856
util.h: replace ntohl/htonl with get/putbe32
Matt Mackall <mpm@selenic.com>
parents:
16393
diff
changeset
|
108 |
d126a0d16856
util.h: replace ntohl/htonl with get/putbe32
Matt Mackall <mpm@selenic.com>
parents:
16393
diff
changeset
|
109 return ((d[0] << 24) | |
d126a0d16856
util.h: replace ntohl/htonl with get/putbe32
Matt Mackall <mpm@selenic.com>
parents:
16393
diff
changeset
|
110 (d[1] << 16) | |
d126a0d16856
util.h: replace ntohl/htonl with get/putbe32
Matt Mackall <mpm@selenic.com>
parents:
16393
diff
changeset
|
111 (d[2] << 8) | |
d126a0d16856
util.h: replace ntohl/htonl with get/putbe32
Matt Mackall <mpm@selenic.com>
parents:
16393
diff
changeset
|
112 (d[3])); |
d126a0d16856
util.h: replace ntohl/htonl with get/putbe32
Matt Mackall <mpm@selenic.com>
parents:
16393
diff
changeset
|
113 } |
d126a0d16856
util.h: replace ntohl/htonl with get/putbe32
Matt Mackall <mpm@selenic.com>
parents:
16393
diff
changeset
|
114 |
24015
e2bf959a5a0d
util: add getbe{u,}int16 utility methods
Augie Fackler <augie@google.com>
parents:
21838
diff
changeset
|
115 static inline int16_t getbeint16(const char *c) |
e2bf959a5a0d
util: add getbe{u,}int16 utility methods
Augie Fackler <augie@google.com>
parents:
21838
diff
changeset
|
116 { |
e2bf959a5a0d
util: add getbe{u,}int16 utility methods
Augie Fackler <augie@google.com>
parents:
21838
diff
changeset
|
117 const unsigned char *d = (const unsigned char *)c; |
e2bf959a5a0d
util: add getbe{u,}int16 utility methods
Augie Fackler <augie@google.com>
parents:
21838
diff
changeset
|
118 |
e2bf959a5a0d
util: add getbe{u,}int16 utility methods
Augie Fackler <augie@google.com>
parents:
21838
diff
changeset
|
119 return ((d[0] << 8) | |
e2bf959a5a0d
util: add getbe{u,}int16 utility methods
Augie Fackler <augie@google.com>
parents:
21838
diff
changeset
|
120 (d[1])); |
e2bf959a5a0d
util: add getbe{u,}int16 utility methods
Augie Fackler <augie@google.com>
parents:
21838
diff
changeset
|
121 } |
e2bf959a5a0d
util: add getbe{u,}int16 utility methods
Augie Fackler <augie@google.com>
parents:
21838
diff
changeset
|
122 |
e2bf959a5a0d
util: add getbe{u,}int16 utility methods
Augie Fackler <augie@google.com>
parents:
21838
diff
changeset
|
123 static inline uint16_t getbeuint16(const char *c) |
e2bf959a5a0d
util: add getbe{u,}int16 utility methods
Augie Fackler <augie@google.com>
parents:
21838
diff
changeset
|
124 { |
e2bf959a5a0d
util: add getbe{u,}int16 utility methods
Augie Fackler <augie@google.com>
parents:
21838
diff
changeset
|
125 const unsigned char *d = (const unsigned char *)c; |
e2bf959a5a0d
util: add getbe{u,}int16 utility methods
Augie Fackler <augie@google.com>
parents:
21838
diff
changeset
|
126 |
e2bf959a5a0d
util: add getbe{u,}int16 utility methods
Augie Fackler <augie@google.com>
parents:
21838
diff
changeset
|
127 return ((d[0] << 8) | |
e2bf959a5a0d
util: add getbe{u,}int16 utility methods
Augie Fackler <augie@google.com>
parents:
21838
diff
changeset
|
128 (d[1])); |
e2bf959a5a0d
util: add getbe{u,}int16 utility methods
Augie Fackler <augie@google.com>
parents:
21838
diff
changeset
|
129 } |
e2bf959a5a0d
util: add getbe{u,}int16 utility methods
Augie Fackler <augie@google.com>
parents:
21838
diff
changeset
|
130 |
16437
d126a0d16856
util.h: replace ntohl/htonl with get/putbe32
Matt Mackall <mpm@selenic.com>
parents:
16393
diff
changeset
|
131 static inline void putbe32(uint32_t x, char *c) |
d126a0d16856
util.h: replace ntohl/htonl with get/putbe32
Matt Mackall <mpm@selenic.com>
parents:
16393
diff
changeset
|
132 { |
d126a0d16856
util.h: replace ntohl/htonl with get/putbe32
Matt Mackall <mpm@selenic.com>
parents:
16393
diff
changeset
|
133 c[0] = (x >> 24) & 0xff; |
d126a0d16856
util.h: replace ntohl/htonl with get/putbe32
Matt Mackall <mpm@selenic.com>
parents:
16393
diff
changeset
|
134 c[1] = (x >> 16) & 0xff; |
d126a0d16856
util.h: replace ntohl/htonl with get/putbe32
Matt Mackall <mpm@selenic.com>
parents:
16393
diff
changeset
|
135 c[2] = (x >> 8) & 0xff; |
d126a0d16856
util.h: replace ntohl/htonl with get/putbe32
Matt Mackall <mpm@selenic.com>
parents:
16393
diff
changeset
|
136 c[3] = (x) & 0xff; |
d126a0d16856
util.h: replace ntohl/htonl with get/putbe32
Matt Mackall <mpm@selenic.com>
parents:
16393
diff
changeset
|
137 } |
d126a0d16856
util.h: replace ntohl/htonl with get/putbe32
Matt Mackall <mpm@selenic.com>
parents:
16393
diff
changeset
|
138 |
24016 | 139 static inline double getbefloat64(const char *c) |
140 { | |
141 const unsigned char *d = (const unsigned char *)c; | |
142 double ret; | |
143 int i; | |
144 uint64_t t = 0; | |
145 for (i = 0; i < 8; i++) { | |
146 t = (t<<8) + d[i]; | |
147 } | |
148 memcpy(&ret, &t, sizeof(t)); | |
149 return ret; | |
150 } | |
151 | |
24608
1c533e23ce95
util.h: define an enum for normcase specs
Siddharth Agarwal <sid0@fb.com>
parents:
24443
diff
changeset
|
152 /* This should be kept in sync with normcasespecs in encoding.py. */ |
1c533e23ce95
util.h: define an enum for normcase specs
Siddharth Agarwal <sid0@fb.com>
parents:
24443
diff
changeset
|
153 enum normcase_spec { |
1c533e23ce95
util.h: define an enum for normcase specs
Siddharth Agarwal <sid0@fb.com>
parents:
24443
diff
changeset
|
154 NORMCASE_LOWER = -1, |
1c533e23ce95
util.h: define an enum for normcase specs
Siddharth Agarwal <sid0@fb.com>
parents:
24443
diff
changeset
|
155 NORMCASE_UPPER = 1, |
1c533e23ce95
util.h: define an enum for normcase specs
Siddharth Agarwal <sid0@fb.com>
parents:
24443
diff
changeset
|
156 NORMCASE_OTHER = 0 |
1c533e23ce95
util.h: define an enum for normcase specs
Siddharth Agarwal <sid0@fb.com>
parents:
24443
diff
changeset
|
157 }; |
1c533e23ce95
util.h: define an enum for normcase specs
Siddharth Agarwal <sid0@fb.com>
parents:
24443
diff
changeset
|
158 |
24443
539b3c7eea44
phase: compute phases in C
Laurent Charignon <lcharignon@fb.com>
parents:
24442
diff
changeset
|
159 #define MIN(a, b) (((a)<(b))?(a):(b)) |
24442
98042b0e19f9
manifest: move C bool polyfill into util.h
Matt Mackall <mpm@selenic.com>
parents:
24016
diff
changeset
|
160 /* VC9 doesn't include bool and lacks stdbool.h based on my searching */ |
24829
8e9f8d2a2c0c
util: fix the check for non-C99 compilers (issue4605)
Kevin Bullock <kbullock@ringworld.org>
parents:
24823
diff
changeset
|
161 #if defined(_MSC_VER) || __STDC_VERSION__ < 199901L |
24442
98042b0e19f9
manifest: move C bool polyfill into util.h
Matt Mackall <mpm@selenic.com>
parents:
24016
diff
changeset
|
162 #define true 1 |
98042b0e19f9
manifest: move C bool polyfill into util.h
Matt Mackall <mpm@selenic.com>
parents:
24016
diff
changeset
|
163 #define false 0 |
98042b0e19f9
manifest: move C bool polyfill into util.h
Matt Mackall <mpm@selenic.com>
parents:
24016
diff
changeset
|
164 typedef unsigned char bool; |
98042b0e19f9
manifest: move C bool polyfill into util.h
Matt Mackall <mpm@selenic.com>
parents:
24016
diff
changeset
|
165 #else |
98042b0e19f9
manifest: move C bool polyfill into util.h
Matt Mackall <mpm@selenic.com>
parents:
24016
diff
changeset
|
166 #include <stdbool.h> |
98042b0e19f9
manifest: move C bool polyfill into util.h
Matt Mackall <mpm@selenic.com>
parents:
24016
diff
changeset
|
167 #endif |
98042b0e19f9
manifest: move C bool polyfill into util.h
Matt Mackall <mpm@selenic.com>
parents:
24016
diff
changeset
|
168 |
11358
4494fb02d549
util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff
changeset
|
169 #endif /* _HG_UTIL_H_ */ |