##// END OF EJS Templates
localrepo: define storage backend in creation options (API)...
localrepo: define storage backend in creation options (API) We add an experimental config option to define the storage backend for new repositories. By default, it uses "revlogv1," which maps to the current and only modern supported repository format. We add a "backend" creation option to control which backend to use. It defaults to using the value from the config option. newreporequirements() will now barf if it sees a "backend" value that isn't "revlogv1." This forces extensions to monkeypatch the function to handle requirements derivation for custom backends. In order for this to "just work," we factored out obtaining the default creation options into its own function and made callers of newreporequirements() responsible for passing in valid data. Without this, direct callers of newreporequirements() wouldn't get the proper results. Differential Revision: https://phab.mercurial-scm.org/D4791

File last commit:

r36636:9a639a33 default
r40032:dbcb466d default
Show More
util.h
61 lines | 1.6 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
char state;
int mode;
int size;
int mtime;
} dirstateTupleObject;
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
extern PyTypeObject dirstateTupleType;
#define dirstate_tuple_check(op) (Py_TYPE(op) == &dirstateTupleType)
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);
}
Yuya Nishihara
cext: move util.h to cext tree...
r32384 #endif /* _HG_UTIL_H_ */