author | Yuya Nishihara <yuya@tcha.org> |
Sun, 09 Jun 2019 22:18:22 +0900 | |
changeset 42456 | d279e4f453c4 |
parent 36954 | 0585337ea787 |
child 43076 | 2372284d9457 |
permissions | -rw-r--r-- |
29875
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
1 |
from __future__ import absolute_import |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
2 |
|
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
3 |
import cffi |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
4 |
import os |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
5 |
|
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
6 |
ffi = cffi.FFI() |
30356
9cc438bf7d9a
setup: move cffi stuff to mercurial/cffi
Jun Wu <quark@fb.com>
parents:
29875
diff
changeset
|
7 |
mpatch_c = os.path.join(os.path.join(os.path.dirname(__file__), '..', |
29875
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
8 |
'mpatch.c')) |
36954
0585337ea787
cleanup: fix some latent open(path).read() et al calls we previously missed
Augie Fackler <augie@google.com>
parents:
32539
diff
changeset
|
9 |
with open(mpatch_c) as f: |
0585337ea787
cleanup: fix some latent open(path).read() et al calls we previously missed
Augie Fackler <augie@google.com>
parents:
32539
diff
changeset
|
10 |
ffi.set_source("mercurial.cffi._mpatch", f.read(), |
0585337ea787
cleanup: fix some latent open(path).read() et al calls we previously missed
Augie Fackler <augie@google.com>
parents:
32539
diff
changeset
|
11 |
include_dirs=["mercurial"]) |
29875
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
12 |
ffi.cdef(""" |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
13 |
|
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
14 |
struct mpatch_frag { |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
15 |
int start, end, len; |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
16 |
const char *data; |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
17 |
}; |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
18 |
|
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
19 |
struct mpatch_flist { |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
20 |
struct mpatch_frag *base, *head, *tail; |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
21 |
}; |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
22 |
|
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
23 |
extern "Python" struct mpatch_flist* cffi_get_next_item(void*, ssize_t); |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
24 |
|
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
25 |
int mpatch_decode(const char *bin, ssize_t len, struct mpatch_flist** res); |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
26 |
ssize_t mpatch_calcsize(size_t len, struct mpatch_flist *l); |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
27 |
void mpatch_lfree(struct mpatch_flist *a); |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
28 |
static int mpatch_apply(char *buf, const char *orig, size_t len, |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
29 |
struct mpatch_flist *l); |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
30 |
struct mpatch_flist *mpatch_fold(void *bins, |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
31 |
struct mpatch_flist* (*get_next_item)(void*, ssize_t), |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
32 |
ssize_t start, ssize_t end); |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
33 |
""") |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
34 |
|
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
35 |
if __name__ == '__main__': |
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
36 |
ffi.compile() |