-
Notifications
You must be signed in to change notification settings - Fork 3
/
headerMap.txt
152 lines (141 loc) · 7.16 KB
/
headerMap.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
headerMap.txt
=============
This file gives an overview of the structure of the program, showing the chain
of #includes and the logical order in which to read and understand the files
here. An arrow means the pointed-from header file is #included by the pointed-to
header file.
The files in {curly brackets} underneath each header file are the .cpp files on
which the header relies for implementation as there is not a strict 1:1
correspondence between the two: some headers are template / inline only so have
no implementation, while others have their implementation split across
compilation units to seperate out runtime code from the large static data
structures required for encoding etc.
The library consists of a C++ program which takes a pdf file as input and gives
complex data structures as output. These data structures can be passed to a
C++ file that includes an interface to the required output format or language.
This project outputs to R, but a wrapper could be written for any other output
target.
--------------------------------------------------------------------------------
C++ program
===========
"external/Profiler.h"
|
|
<string> v
<vector> -----> "debugtools.h"
<iostream> | <algorithm>
| <numeric>
v <string>
"utilities.h" <-------- <vector>
<fstream> ---> {utilities.cpp} <unordered_map>
| <iostream>
|
v
,----- "dictionary.h" -----,
| {dictionary.cpp} |
| |
v v
"streams.h" <utility> "crypto.h" <-- <deque>
{streams.cpp} | {crypto.cpp}
| | |
| v |
'-------> "xref.h" <-------'
{xref.cpp}
|
|
v
"object_class.h"
{object_class.cpp}
|
| .----- <memory>
| |
v v
,---- "document.h" ----,
| {document.cpp} |
| ^ |
| | |
| <list> |
v v
"encoding.h" "glyphwidths.h"
{encoding.cpp} {glyphwidths.cpp}
{chartounicode.cpp} {corefonts.cpp}
{adobetounicode.cpp} |
| |
'-----> "font.h" <-----'
{font.cpp}
|
|
v
"box.h"
{box.cpp}
|
|
v
"page.h"
{page.cpp}
|
|
v
"text_element.h"
{text_element.cpp}
|
|
v
"parser.h" <--- <functional>
{parser.cpp}
|
|
v
"tokenizer.h"
{tokenizer.cpp}
|
|
v
"letter_grouper.h"
{letter_grouper.cpp} <--- <cstdlib>
|
|
v
"word_grouper.h"
{word_grouper.cpp}
|
|
v
"whitespace.h"
{whitespace.cpp}
|
|
v
"line_grouper.h"
{line_grouper.cpp}
|
|
v
[Just #include "line_grouper.h" in wrapper]
--------------------------------------------------------------------------------
R wrapper
=========
"line_grouper.h"
|
v
------> pdfr.h ----------------
/ {pdfr.cpp} |
/ ^ |
<Rcpp.h> / | |
*external* \ <list> |
\ |
\ |
---> {RcppExports.cpp}<-- v
| \ [automatically generated
v / from export tags in pdfr.h]
RcppExports.R <--
(makes functions
accessible to R)
|
v
pdfr.R
(wraps exported functions
to expand and make R user-friendly)
|
v
[functions available in R]