mercurial/cffi/bdiffbuild.py
author Pierre-Yves David <pierre-yves.david@octobus.net>
Wed, 02 Oct 2019 14:16:30 -0400
changeset 43230 e51f5d06a99c
parent 43077 687b865b95ad
child 43432 53607fd3ec6c
permissions -rw-r--r--
sidedatacopies: only read from copies when in this mode If we know we expect data from sidedata, we read them from sidedata and nothing else. This avoid looking into extra for revision without sidedata entries. Such revision will be introduced in the next changesets. Differential Revision: https://phab.mercurial-scm.org/D7067
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
29844
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
     1
from __future__ import absolute_import
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
     2
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
     3
import cffi
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
     4
import os
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
     5
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
     6
ffi = cffi.FFI()
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36954
diff changeset
     7
with open(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
     8
    os.path.join(os.path.join(os.path.dirname(__file__), b'..'), b'bdiff.c')
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36954
diff changeset
     9
) as f:
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36954
diff changeset
    10
    ffi.set_source(
43077
687b865b95ad formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents: 43076
diff changeset
    11
        b"mercurial.cffi._bdiff", f.read(), include_dirs=[b'mercurial']
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36954
diff changeset
    12
    )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36954
diff changeset
    13
ffi.cdef(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36954
diff changeset
    14
    """
29844
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    15
struct bdiff_line {
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    16
    int hash, n, e;
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    17
    ssize_t len;
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    18
    const char *l;
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    19
};
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    20
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    21
struct bdiff_hunk;
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    22
struct bdiff_hunk {
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    23
    int a1, a2, b1, b2;
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    24
    struct bdiff_hunk *next;
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    25
};
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    26
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    27
int bdiff_splitlines(const char *a, ssize_t len, struct bdiff_line **lr);
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    28
int bdiff_diff(struct bdiff_line *a, int an, struct bdiff_line *b, int bn,
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    29
    struct bdiff_hunk *base);
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    30
void bdiff_freehunks(struct bdiff_hunk *l);
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    31
void free(void*);
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36954
diff changeset
    32
"""
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 36954
diff changeset
    33
)
29844
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    34
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    35
if __name__ == '__main__':
a8933d992a71 bdiff: implement cffi version of blocks
Maciej Fijalkowski <fijall@gmail.com>
parents:
diff changeset
    36
    ffi.compile()