setup_bdiff_cffi.py
changeset 30346 9cc438bf7d9a
parent 30345 fa54f7ade491
child 30347 494d5cec0b07
equal deleted inserted replaced
30345:fa54f7ade491 30346:9cc438bf7d9a
     1 from __future__ import absolute_import
       
     2 
       
     3 import cffi
       
     4 import os
       
     5 
       
     6 ffi = cffi.FFI()
       
     7 ffi.set_source("_bdiff_cffi",
       
     8     open(os.path.join(os.path.join(os.path.dirname(__file__), 'mercurial'),
       
     9         'bdiff.c')).read(), include_dirs=['mercurial'])
       
    10 ffi.cdef("""
       
    11 struct bdiff_line {
       
    12     int hash, n, e;
       
    13     ssize_t len;
       
    14     const char *l;
       
    15 };
       
    16 
       
    17 struct bdiff_hunk;
       
    18 struct bdiff_hunk {
       
    19     int a1, a2, b1, b2;
       
    20     struct bdiff_hunk *next;
       
    21 };
       
    22 
       
    23 int bdiff_splitlines(const char *a, ssize_t len, struct bdiff_line **lr);
       
    24 int bdiff_diff(struct bdiff_line *a, int an, struct bdiff_line *b, int bn,
       
    25     struct bdiff_hunk *base);
       
    26 void bdiff_freehunks(struct bdiff_hunk *l);
       
    27 void free(void*);
       
    28 """)
       
    29 
       
    30 if __name__ == '__main__':
       
    31     ffi.compile()