author | Martin von Zweigbergk <martinvonz@google.com> |
Thu, 05 Apr 2018 00:04:09 -0700 | |
changeset 37385 | ecd3f6909184 |
parent 36948 | 0585337ea787 |
child 43076 | 2372284d9457 |
permissions | -rw-r--r-- |
29871
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() |
30346
9cc438bf7d9a
setup: move cffi stuff to mercurial/cffi
Jun Wu <quark@fb.com>
parents:
29871
diff
changeset
|
7 |
mpatch_c = os.path.join(os.path.join(os.path.dirname(__file__), '..', |
29871
90af59b40d8a
mpatch: add setup_mpatch_cffi.py
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff
changeset
|
8 |
'mpatch.c')) |
36948
0585337ea787
cleanup: fix some latent open(path).read() et al calls we previously missed
Augie Fackler <augie@google.com>
parents:
32506
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:
32506
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:
32506
diff
changeset
|
11 |
include_dirs=["mercurial"]) |
29871
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() |