comparison mupdf-source/thirdparty/extract/README @ 2:b50eed0cc0ef upstream

ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4. The directory name has changed: no version number in the expanded directory now.
author Franz Glasner <fzglas.hg@dom66.de>
date Mon, 15 Sep 2025 11:43:07 +0200
parents
children
comparison
equal deleted inserted replaced
1:1d09e1dec1d9 2:b50eed0cc0ef
1 Directory tree:
2
3 Makefile Builds and runs tests.
4 include/ Public API.
5 src/ Scripts, C implementation and internal headers.
6 build/ Generated object files, executables etc.
7 test/ Test files.
8 generated/ Files generated by tests.
9
10 Suggested setup for testing:
11 Checkout ghostpdl and mupdf into the same directory.
12 Inside ghostpdl:
13 ln -s ../mupdf/thirdparty/extract extract
14
15 Then either:
16 Inside ghostpdl:
17 ./autogen.sh --with-extract-dir=extract
18 make -j 8 debug DEBUGDIRPREFIX=debug-extract-
19 Inside mupdf:
20 make -j 8 debug
21 or:
22 make test-rebuild-dependent-binaries (for the first time)
23 make test-build-dependent-binaries (for incremental builds)
24
25
26 Then build and run tests from inside mupdf/thirdparty/extract
27 as below.
28
29 Build and run tests with:
30 make
31
32 Conventions:
33
34 Errors:
35
36 Functions return zero on success or -1 with errno set.
37
38 Identifier/symbol names:
39
40 All identifiers that can be seen by client code (generally things
41 defined in include/) start with 'extract_'.
42
43 Similarly global symbols in generated .o files all start with
44 'extract_'; this is tested by target 'test-obj'.
45
46 Other identifiers and symbols do not have an 'extract_' prefix - not
47 necessary because client code cannot see these names.
48
49 Header names in include/ start with 'extract_'.
50
51 Allocation:
52
53 Functions that free a data structure generally take a double pointer
54 so that they can set the pointer to NULL before returning, which helps
55 avoid stray invalid non-NULL pointers. E.g.:
56
57 extract_span_free(extract_alloc_t* alloc, span_t** pspan);
58 /* Frees a span_t, returning with *pspan set to NULL. */
59
60 This double-pointer approach is also used for raw allocation - see
61 include/extract_alloc.h.
62
63 Lists:
64 Lists of data items are generally implemented using an array of
65 pointers and an int 'foo_num' entry, e.g.:
66
67 line_t** lines;
68 int lines_num;
69