##// END OF EJS Templates
dirstate: inline the last two `_drop` usage...
dirstate: inline the last two `_drop` usage The function is small and having the associated code directly inline help use to cleanup the dirstate API. Differential Revision: https://phab.mercurial-scm.org/D11428

File last commit:

r48789:ec178161 default
r48802:d459c6b8 default
Show More
util.h
83 lines | 2.5 KiB | text/x-c | CLexer
Yuya Nishihara
cext: move util.h to cext tree...
r32384 /*
util.h - utility functions for interfacing with the various python APIs.
This software may be used and distributed according to the terms of
the GNU General Public License, incorporated herein by reference.
*/
#ifndef _HG_UTIL_H_
#define _HG_UTIL_H_
#include "compat.h"
#if PY_MAJOR_VERSION >= 3
#define IS_PY3K
#endif
Yuya Nishihara
py3: add PY23() macro to switch string literal depending on python version...
r36636 /* helper to switch things like string literal depending on Python version */
#ifdef IS_PY3K
#define PY23(py2, py3) py3
#else
#define PY23(py2, py3) py2
#endif
Augie Fackler
util: add clang-format control comment around struct and format macro...
r34636 /* clang-format off */
Yuya Nishihara
cext: move util.h to cext tree...
r32384 typedef struct {
PyObject_HEAD
Martin von Zweigbergk
dirstate: make dirstate flags char be unsigned...
r48789 unsigned char flags;
Yuya Nishihara
cext: move util.h to cext tree...
r32384 int mode;
int size;
int mtime;
dirstate-item: rename the class to DirstateItem...
r48328 } dirstateItemObject;
Augie Fackler
util: add clang-format control comment around struct and format macro...
r34636 /* clang-format on */
Yuya Nishihara
cext: move util.h to cext tree...
r32384
Martin von Zweigbergk
dirstate: make dirstate flags char be unsigned...
r48789 static const unsigned char dirstate_flag_wc_tracked = 1;
static const unsigned char dirstate_flag_p1_tracked = 1 << 1;
static const unsigned char dirstate_flag_p2_tracked = 1 << 2;
static const unsigned char dirstate_flag_possibly_dirty = 1 << 3;
static const unsigned char dirstate_flag_merged = 1 << 4;
static const unsigned char dirstate_flag_clean_p1 = 1 << 5;
static const unsigned char dirstate_flag_clean_p2 = 1 << 6;
static const unsigned char dirstate_flag_rust_special = 1 << 7;
dirstate-item: move the C implementation to the same logic...
r48760
dirstate-item: rename the class to DirstateItem...
r48328 extern PyTypeObject dirstateItemType;
#define dirstate_tuple_check(op) (Py_TYPE(op) == &dirstateItemType)
Yuya Nishihara
cext: move util.h to cext tree...
r32384
André Sintzoff
cext: define MIN macro only if it is not yet defined...
r35793 #ifndef MIN
Augie Fackler
util: add clang-format control comment around struct and format macro...
r34636 #define MIN(a, b) (((a) < (b)) ? (a) : (b))
André Sintzoff
cext: define MIN macro only if it is not yet defined...
r35793 #endif
Yuya Nishihara
cext: move util.h to cext tree...
r32384 /* VC9 doesn't include bool and lacks stdbool.h based on my searching */
#if defined(_MSC_VER) || __STDC_VERSION__ < 199901L
#define true 1
#define false 0
typedef unsigned char bool;
#else
#include <stdbool.h>
#endif
Yuya Nishihara
cext: move _dict_new_presized() to header...
r33751 static inline PyObject *_dict_new_presized(Py_ssize_t expected_size)
{
/* _PyDict_NewPresized expects a minused parameter, but it actually
creates a dictionary that's the nearest power of two bigger than the
parameter. For example, with the initial minused = 1000, the
dictionary created has size 1024. Of course in a lot of cases that
can be greater than the maximum load factor Python's dict object
expects (= 2/3), so as soon as we cross the threshold we'll resize
anyway. So create a dictionary that's at least 3/2 the size. */
return _PyDict_NewPresized(((1 + expected_size) / 2) * 3);
}
Augie Fackler
revlog: replace PyInt_AS_LONG with a more portable helper function...
r40634 /* Convert a PyInt or PyLong to a long. Returns false if there is an
error, in which case an exception will already have been set. */
static inline bool pylong_to_long(PyObject *pylong, long *out)
{
*out = PyLong_AsLong(pylong);
/* Fast path to avoid hitting PyErr_Occurred if the value was obviously
* not an error. */
if (*out != -1) {
return true;
}
return PyErr_Occurred() == NULL;
}
Yuya Nishihara
cext: move util.h to cext tree...
r32384 #endif /* _HG_UTIL_H_ */