revlog: export symbol of indexType
The idea is to wrap the index object with rust-cpython. I haven't tried it,
but it should be doable. We'll probably need a better interface than raw
function pointers to do more in Rust.
--- a/mercurial/cext/revlog.c Sun Dec 02 21:33:43 2018 +0900
+++ b/mercurial/cext/revlog.c Sun Dec 02 21:37:42 2018 +0900
@@ -17,6 +17,7 @@
#include "bitmanipulation.h"
#include "charencode.h"
+#include "revlog.h"
#include "util.h"
#ifdef IS_PY3K
@@ -1511,8 +1512,6 @@
return 0;
}
-static PyTypeObject indexType;
-
static int ntobj_init(nodetreeObject *self, PyObject *args)
{
PyObject *index;
@@ -2582,7 +2581,7 @@
{NULL} /* Sentinel */
};
-static PyTypeObject indexType = {
+PyTypeObject indexType = {
PyVarObject_HEAD_INIT(NULL, 0) /* header */
"parsers.index", /* tp_name */
sizeof(indexObject), /* tp_basicsize */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/cext/revlog.h Sun Dec 02 21:37:42 2018 +0900
@@ -0,0 +1,15 @@
+/*
+ revlog.h - efficient revlog parsing
+
+ This software may be used and distributed according to the terms of
+ the GNU General Public License, incorporated herein by reference.
+*/
+
+#ifndef _HG_REVLOG_H_
+#define _HG_REVLOG_H_
+
+#include <Python.h>
+
+extern PyTypeObject indexType;
+
+#endif /* _HG_REVLOG_H_ */
--- a/setup.py Sun Dec 02 21:33:43 2018 +0900
+++ b/setup.py Sun Dec 02 21:37:42 2018 +0900
@@ -968,6 +968,7 @@
'hg-direct-ffi',
include_dirs=common_include_dirs,
depends=common_depends + ['mercurial/cext/charencode.h',
+ 'mercurial/cext/revlog.h',
'rust/hg-core/src/ancestors.rs',
'rust/hg-core/src/lib.rs']),
Extension('mercurial.cext.osutil', ['mercurial/cext/osutil.c'],