annotate mercurial/util.h @ 29136:e05bdc01505f

check-code: add a rule banning `env -u`
author Kevin Bullock <kbullock+mercurial@ringworld.org>
date Fri, 06 May 2016 08:45:56 -0500
parents 14bf7679fb68
children 284d742e5611
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
fb93721cc229 util: add getbefloat64
Augie Fackler <augie@google.com>
parents: 24015
diff changeset
139 static inline double getbefloat64(const char *c)
fb93721cc229 util: add getbefloat64
Augie Fackler <augie@google.com>
parents: 24015
diff changeset
140 {
fb93721cc229 util: add getbefloat64
Augie Fackler <augie@google.com>
parents: 24015
diff changeset
141 const unsigned char *d = (const unsigned char *)c;
fb93721cc229 util: add getbefloat64
Augie Fackler <augie@google.com>
parents: 24015
diff changeset
142 double ret;
fb93721cc229 util: add getbefloat64
Augie Fackler <augie@google.com>
parents: 24015
diff changeset
143 int i;
fb93721cc229 util: add getbefloat64
Augie Fackler <augie@google.com>
parents: 24015
diff changeset
144 uint64_t t = 0;
fb93721cc229 util: add getbefloat64
Augie Fackler <augie@google.com>
parents: 24015
diff changeset
145 for (i = 0; i < 8; i++) {
fb93721cc229 util: add getbefloat64
Augie Fackler <augie@google.com>
parents: 24015
diff changeset
146 t = (t<<8) + d[i];
fb93721cc229 util: add getbefloat64
Augie Fackler <augie@google.com>
parents: 24015
diff changeset
147 }
fb93721cc229 util: add getbefloat64
Augie Fackler <augie@google.com>
parents: 24015
diff changeset
148 memcpy(&ret, &t, sizeof(t));
fb93721cc229 util: add getbefloat64
Augie Fackler <augie@google.com>
parents: 24015
diff changeset
149 return ret;
fb93721cc229 util: add getbefloat64
Augie Fackler <augie@google.com>
parents: 24015
diff changeset
150 }
fb93721cc229 util: add getbefloat64
Augie Fackler <augie@google.com>
parents: 24015
diff changeset
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_ */