annotate mercurial/util.h @ 16422:c0b5bab3fb11

changegroupsubset: avoid setdefault in inner loop
author Matt Mackall <mpm@selenic.com>
date Fri, 13 Apr 2012 22:55:46 -0500
parents ee163a9cf37c
children d126a0d16856
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
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
60 /* Backports from 2.6 */
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
61 #if PY_VERSION_HEX < 0x02060000
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
62
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
63 #define Py_TYPE(ob) (ob)->ob_type
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
64 #define Py_SIZE(ob) (ob)->ob_size
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
65 #define PyVarObject_HEAD_INIT(type, size) PyObject_HEAD_INIT(type) size,
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
66
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
67 /* Shamelessly stolen from bytesobject.h */
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
68 #define PyBytesObject PyStringObject
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
69 #define PyBytes_Type PyString_Type
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
70
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
71 #define PyBytes_Check PyString_Check
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
72 #define PyBytes_CheckExact PyString_CheckExact
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
73 #define PyBytes_CHECK_INTERNED PyString_CHECK_INTERNED
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
74 #define PyBytes_AS_STRING PyString_AS_STRING
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
75 #define PyBytes_GET_SIZE PyString_GET_SIZE
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
76 #define Py_TPFLAGS_BYTES_SUBCLASS Py_TPFLAGS_STRING_SUBCLASS
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
77
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
78 #define PyBytes_FromStringAndSize PyString_FromStringAndSize
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
79 #define PyBytes_FromString PyString_FromString
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
80 #define PyBytes_FromFormatV PyString_FromFormatV
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
81 #define PyBytes_FromFormat PyString_FromFormat
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
82 #define PyBytes_Size PyString_Size
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
83 #define PyBytes_AsString PyString_AsString
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
84 #define PyBytes_Repr PyString_Repr
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
85 #define PyBytes_Concat PyString_Concat
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
86 #define PyBytes_ConcatAndDel PyString_ConcatAndDel
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
87 #define _PyBytes_Resize _PyString_Resize
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
88 #define _PyBytes_Eq _PyString_Eq
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
89 #define PyBytes_Format PyString_Format
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
90 #define _PyBytes_FormatLong _PyString_FormatLong
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
91 #define PyBytes_DecodeEscape PyString_DecodeEscape
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
92 #define _PyBytes_Join _PyString_Join
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
93 #define PyBytes_Decode PyString_Decode
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
94 #define PyBytes_Encode PyString_Encode
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
95 #define PyBytes_AsEncodedObject PyString_AsEncodedObject
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
96 #define PyBytes_AsEncodedString PyString_AsEncodedString
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
97 #define PyBytes_AsDecodedObject PyString_AsDecodedObject
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
98 #define PyBytes_AsDecodedString PyString_AsDecodedString
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
99 #define PyBytes_AsStringAndSize PyString_AsStringAndSize
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
100 #define _PyBytes_InsertThousandsGrouping _PyString_InsertThousandsGrouping
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
101
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
102 #endif /* PY_VERSION_HEX */
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
103
16382
f542d291c4f2 util.h: add a typedef for Py_ssize_t with Python 2.4
Matt Mackall <mpm@selenic.com>
parents: 13302
diff changeset
104 #if (PY_VERSION_HEX < 0x02050000)
16384
8d821a173e4e util.h: move Py_ssize_t bits from mpatch.c
Matt Mackall <mpm@selenic.com>
parents: 16382
diff changeset
105 /* Definitions to get compatibility with python 2.4 and earlier which
8d821a173e4e util.h: move Py_ssize_t bits from mpatch.c
Matt Mackall <mpm@selenic.com>
parents: 16382
diff changeset
106 does not have Py_ssize_t. See also PEP 353.
8d821a173e4e util.h: move Py_ssize_t bits from mpatch.c
Matt Mackall <mpm@selenic.com>
parents: 16382
diff changeset
107 Note: msvc (8 or earlier) does not have ssize_t, so we use Py_ssize_t.
8d821a173e4e util.h: move Py_ssize_t bits from mpatch.c
Matt Mackall <mpm@selenic.com>
parents: 16382
diff changeset
108 */
16382
f542d291c4f2 util.h: add a typedef for Py_ssize_t with Python 2.4
Matt Mackall <mpm@selenic.com>
parents: 13302
diff changeset
109 typedef int Py_ssize_t;
16393
ee163a9cf37c util.h: more Python 2.4 fixes
Matt Mackall <mpm@selenic.com>
parents: 16385
diff changeset
110 typedef Py_ssize_t (*lenfunc)(PyObject *);
ee163a9cf37c util.h: more Python 2.4 fixes
Matt Mackall <mpm@selenic.com>
parents: 16385
diff changeset
111 typedef PyObject *(*ssizeargfunc)(PyObject *, Py_ssize_t);
ee163a9cf37c util.h: more Python 2.4 fixes
Matt Mackall <mpm@selenic.com>
parents: 16385
diff changeset
112
16384
8d821a173e4e util.h: move Py_ssize_t bits from mpatch.c
Matt Mackall <mpm@selenic.com>
parents: 16382
diff changeset
113 #if !defined(PY_SSIZE_T_MIN)
8d821a173e4e util.h: move Py_ssize_t bits from mpatch.c
Matt Mackall <mpm@selenic.com>
parents: 16382
diff changeset
114 #define PY_SSIZE_T_MAX INT_MAX
8d821a173e4e util.h: move Py_ssize_t bits from mpatch.c
Matt Mackall <mpm@selenic.com>
parents: 16382
diff changeset
115 #define PY_SSIZE_T_MIN INT_MIN
8d821a173e4e util.h: move Py_ssize_t bits from mpatch.c
Matt Mackall <mpm@selenic.com>
parents: 16382
diff changeset
116 #endif
16382
f542d291c4f2 util.h: add a typedef for Py_ssize_t with Python 2.4
Matt Mackall <mpm@selenic.com>
parents: 13302
diff changeset
117 #endif
f542d291c4f2 util.h: add a typedef for Py_ssize_t with Python 2.4
Matt Mackall <mpm@selenic.com>
parents: 13302
diff changeset
118
16385
e501f45b0eba util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents: 16384
diff changeset
119 #ifdef _WIN32
e501f45b0eba util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents: 16384
diff changeset
120 #ifdef _MSC_VER
e501f45b0eba util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents: 16384
diff changeset
121 /* msvc 6.0 has problems */
e501f45b0eba util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents: 16384
diff changeset
122 #define inline __inline
e501f45b0eba util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents: 16384
diff changeset
123 typedef unsigned long uint32_t;
e501f45b0eba util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents: 16384
diff changeset
124 typedef unsigned __int64 uint64_t;
e501f45b0eba util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents: 16384
diff changeset
125 #else
e501f45b0eba util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents: 16384
diff changeset
126 #include <stdint.h>
e501f45b0eba util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents: 16384
diff changeset
127 #endif
e501f45b0eba util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents: 16384
diff changeset
128 static uint32_t ntohl(uint32_t x)
e501f45b0eba util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents: 16384
diff changeset
129 {
e501f45b0eba util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents: 16384
diff changeset
130 return ((x & 0x000000ffUL) << 24) |
e501f45b0eba util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents: 16384
diff changeset
131 ((x & 0x0000ff00UL) << 8) |
e501f45b0eba util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents: 16384
diff changeset
132 ((x & 0x00ff0000UL) >> 8) |
e501f45b0eba util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents: 16384
diff changeset
133 ((x & 0xff000000UL) >> 24);
e501f45b0eba util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents: 16384
diff changeset
134 }
e501f45b0eba util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents: 16384
diff changeset
135 #else
e501f45b0eba util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents: 16384
diff changeset
136 /* not windows */
e501f45b0eba util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents: 16384
diff changeset
137 #include <sys/types.h>
e501f45b0eba util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents: 16384
diff changeset
138 #if defined __BEOS__ && !defined __HAIKU__
e501f45b0eba util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents: 16384
diff changeset
139 #include <ByteOrder.h>
e501f45b0eba util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents: 16384
diff changeset
140 #else
e501f45b0eba util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents: 16384
diff changeset
141 #include <arpa/inet.h>
e501f45b0eba util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents: 16384
diff changeset
142 #endif
e501f45b0eba util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents: 16384
diff changeset
143 #include <inttypes.h>
e501f45b0eba util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents: 16384
diff changeset
144 #endif
e501f45b0eba util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents: 16384
diff changeset
145
e501f45b0eba util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents: 16384
diff changeset
146 #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
147 #define inline
e501f45b0eba util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents: 16384
diff changeset
148 #endif
e501f45b0eba util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents: 16384
diff changeset
149
e501f45b0eba util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents: 16384
diff changeset
150 #ifdef __linux
e501f45b0eba util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents: 16384
diff changeset
151 #define inline __inline
e501f45b0eba util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents: 16384
diff changeset
152 #endif
e501f45b0eba util.h: unify some common platform tweaks
Matt Mackall <mpm@selenic.com>
parents: 16384
diff changeset
153
11358
4494fb02d549 util.h: Utility macros for handling different Python APIs.
Renato Cunha <renatoc@gmail.com>
parents:
diff changeset
154 #endif /* _HG_UTIL_H_ */