node-poppler 5.1.4 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. package/README.md +2 -0
  2. package/package.json +13 -13
  3. package/src/index.js +20 -8
  4. package/API.md +0 -465
  5. package/CHANGELOG.md +0 -976
  6. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Annot.h +0 -1783
  7. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/AnnotStampImageHelper.h +0 -68
  8. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Array.h +0 -92
  9. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/BBoxOutputDev.h +0 -54
  10. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/CMap.h +0 -128
  11. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/CachedFile.h +0 -149
  12. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/CairoFontEngine.h +0 -122
  13. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/CairoOutputDev.h +0 -468
  14. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/CairoRescaleBox.h +0 -60
  15. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Catalog.h +0 -318
  16. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/CertificateInfo.h +0 -129
  17. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/CharCodeToUnicode.h +0 -143
  18. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/CharTypes.h +0 -24
  19. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/CurlCachedFile.h +0 -37
  20. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/CurlPDFDocBuilder.h +0 -32
  21. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/DateInfo.h +0 -44
  22. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Decrypt.h +0 -147
  23. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Dict.h +0 -126
  24. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Error.h +0 -59
  25. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/ErrorCodes.h +0 -54
  26. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/FDPDFDocBuilder.h +0 -36
  27. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/FILECacheLoader.h +0 -34
  28. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/FileSpec.h +0 -85
  29. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/FontEncodingTables.h +0 -20
  30. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/FontInfo.h +0 -109
  31. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Form.h +0 -734
  32. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Function.h +0 -251
  33. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Gfx.h +0 -373
  34. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/GfxFont.h +0 -466
  35. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/GfxState.h +0 -1759
  36. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/GfxState_helpers.h +0 -90
  37. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/GlobalParams.h +0 -221
  38. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Hints.h +0 -91
  39. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/JArithmeticDecoder.h +0 -131
  40. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/JBIG2Stream.h +0 -130
  41. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/JPEG2000Stream.h +0 -54
  42. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/JSInfo.h +0 -65
  43. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Lexer.h +0 -113
  44. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Linearization.h +0 -43
  45. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Link.h +0 -566
  46. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/LocalPDFDocBuilder.h +0 -32
  47. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/MarkedContentOutputDev.h +0 -132
  48. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Movie.h +0 -123
  49. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/NameToCharCode.h +0 -52
  50. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/NameToUnicodeTable.h +0 -4300
  51. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Object.h +0 -678
  52. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/OptionalContent.h +0 -117
  53. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Outline.h +0 -122
  54. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/OutputDev.h +0 -379
  55. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/PDFDoc.h +0 -419
  56. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/PDFDocBuilder.h +0 -47
  57. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/PDFDocEncoding.h +0 -43
  58. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/PDFDocFactory.h +0 -58
  59. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/PSOutputDev.h +0 -549
  60. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/PSTokenizer.h +0 -47
  61. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Page.h +0 -273
  62. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/PageTransition.h +0 -105
  63. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Parser.h +0 -76
  64. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/PopplerCache.h +0 -65
  65. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/PreScanOutputDev.h +0 -148
  66. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/ProfileData.h +0 -35
  67. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Rendition.h +0 -164
  68. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/SecurityHandler.h +0 -131
  69. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Sound.h +0 -82
  70. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/SplashOutputDev.h +0 -413
  71. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Stream-CCITT.h +0 -334
  72. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Stream.h +0 -1504
  73. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/StructElement.h +0 -406
  74. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/StructTreeRoot.h +0 -89
  75. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/TextOutputDev.h +0 -918
  76. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/UTF.h +0 -112
  77. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/UnicodeCClassTables.h +0 -983
  78. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/UnicodeCompTables.h +0 -328
  79. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/UnicodeDecompTables.h +0 -7181
  80. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/UnicodeMap.h +0 -128
  81. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/UnicodeMapFuncs.h +0 -35
  82. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/UnicodeMapTables.h +0 -84
  83. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/UnicodeTypeTable.h +0 -49
  84. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/ViewerPreferences.h +0 -87
  85. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/XRef.h +0 -325
  86. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/cpp/poppler-destination.h +0 -69
  87. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/cpp/poppler-document.h +0 -135
  88. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/cpp/poppler-embedded-file.h +0 -55
  89. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/cpp/poppler-font-private.h +0 -68
  90. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/cpp/poppler-font.h +0 -95
  91. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/cpp/poppler-global.h +0 -132
  92. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/cpp/poppler-image.h +0 -74
  93. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/cpp/poppler-page-renderer.h +0 -77
  94. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/cpp/poppler-page-transition.h +0 -85
  95. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/cpp/poppler-page.h +0 -225
  96. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/cpp/poppler-rectangle.h +0 -66
  97. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/cpp/poppler-toc.h +0 -72
  98. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/cpp/poppler-version.h +0 -39
  99. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/cpp/poppler_cpp_export.h +0 -42
  100. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/fofi/FoFiBase.h +0 -66
  101. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/fofi/FoFiEncodings.h +0 -43
  102. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/fofi/FoFiIdentifier.h +0 -52
  103. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/fofi/FoFiTrueType.h +0 -190
  104. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/fofi/FoFiType1.h +0 -70
  105. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/fofi/FoFiType1C.h +0 -263
  106. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/glib/poppler-action.h +0 -454
  107. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/glib/poppler-annot.h +0 -333
  108. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/glib/poppler-attachment.h +0 -123
  109. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/glib/poppler-date.h +0 -32
  110. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/glib/poppler-document.h +0 -541
  111. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/glib/poppler-enums.h +0 -191
  112. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/glib/poppler-features.h +0 -88
  113. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/glib/poppler-form-field.h +0 -254
  114. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/glib/poppler-layer.h +0 -50
  115. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/glib/poppler-macros.h +0 -42
  116. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/glib/poppler-media.h +0 -80
  117. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/glib/poppler-movie.h +0 -81
  118. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/glib/poppler-page.h +0 -424
  119. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/glib/poppler-structure-element.h +0 -425
  120. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/glib/poppler.h +0 -259
  121. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/goo/GooCheckedOps.h +0 -116
  122. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/goo/GooLikely.h +0 -22
  123. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/goo/GooString.h +0 -262
  124. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/goo/GooTimer.h +0 -59
  125. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/goo/ImgWriter.h +0 -39
  126. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/goo/JpegWriter.h +0 -69
  127. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/goo/PNGWriter.h +0 -68
  128. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/goo/TiffWriter.h +0 -70
  129. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/goo/gdir.h +0 -96
  130. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/goo/gfile.h +0 -156
  131. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/goo/gmem.h +0 -201
  132. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/goo/grandom.h +0 -21
  133. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/goo/gstrtod.h +0 -45
  134. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/poppler-config.h +0 -155
  135. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/poppler_private_export.h +0 -42
  136. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/Splash.h +0 -336
  137. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashBitmap.h +0 -127
  138. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashClip.h +0 -131
  139. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashErrorCodes.h +0 -50
  140. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashFTFont.h +0 -71
  141. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashFTFontEngine.h +0 -72
  142. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashFTFontFile.h +0 -64
  143. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashFont.h +0 -116
  144. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashFontEngine.h +0 -89
  145. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashFontFile.h +0 -98
  146. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashFontFileID.h +0 -40
  147. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashGlyphBitmap.h +0 -23
  148. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashMath.h +0 -215
  149. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashPath.h +0 -138
  150. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashPattern.h +0 -107
  151. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashScreen.h +0 -87
  152. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashState.h +0 -132
  153. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashTypes.h +0 -248
  154. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashXPath.h +0 -95
  155. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashXPathScanner.h +0 -136
  156. package/src/lib/win32/poppler-22.04.0/Library/lib/pkgconfig/poppler-cpp.pc +0 -12
  157. package/src/lib/win32/poppler-22.04.0/Library/lib/pkgconfig/poppler-glib.pc +0 -12
  158. package/src/lib/win32/poppler-22.04.0/Library/lib/pkgconfig/poppler.pc +0 -10
  159. package/src/lib/win32/poppler-22.04.0/Library/lib/poppler-cpp.lib +0 -0
  160. package/src/lib/win32/poppler-22.04.0/Library/lib/poppler-glib.lib +0 -0
  161. package/src/lib/win32/poppler-22.04.0/Library/lib/poppler.lib +0 -0
  162. package/src/lib/win32/poppler-22.04.0/Library/share/man/man1/pdfattach.1 +0 -60
  163. package/src/lib/win32/poppler-22.04.0/Library/share/man/man1/pdfdetach.1 +0 -94
  164. package/src/lib/win32/poppler-22.04.0/Library/share/man/man1/pdffonts.1 +0 -128
  165. package/src/lib/win32/poppler-22.04.0/Library/share/man/man1/pdfimages.1 +0 -265
  166. package/src/lib/win32/poppler-22.04.0/Library/share/man/man1/pdfinfo.1 +0 -198
  167. package/src/lib/win32/poppler-22.04.0/Library/share/man/man1/pdfseparate.1 +0 -60
  168. package/src/lib/win32/poppler-22.04.0/Library/share/man/man1/pdftocairo.1 +0 -346
  169. package/src/lib/win32/poppler-22.04.0/Library/share/man/man1/pdftohtml.1 +0 -118
  170. package/src/lib/win32/poppler-22.04.0/Library/share/man/man1/pdftoppm.1 +0 -230
  171. package/src/lib/win32/poppler-22.04.0/Library/share/man/man1/pdftops.1 +0 -267
  172. package/src/lib/win32/poppler-22.04.0/Library/share/man/man1/pdftotext.1 +0 -157
  173. package/src/lib/win32/poppler-22.04.0/Library/share/man/man1/pdfunite.1 +0 -43
  174. package/src/lib/win32/poppler-22.04.0/share/poppler/CMakeLists.txt +0 -309
  175. package/src/lib/win32/poppler-22.04.0/share/poppler/Makefile +0 -333
  176. package/tsconfig.json +0 -9
@@ -1,678 +0,0 @@
1
- //========================================================================
2
- //
3
- // Object.h
4
- //
5
- // Copyright 1996-2003 Glyph & Cog, LLC
6
- //
7
- //========================================================================
8
-
9
- //========================================================================
10
- //
11
- // Modified under the Poppler project - http://poppler.freedesktop.org
12
- //
13
- // All changes made under the Poppler project to this file are licensed
14
- // under GPL version 2 or later
15
- //
16
- // Copyright (C) 2007 Julien Rebetez <julienr@svn.gnome.org>
17
- // Copyright (C) 2008 Kees Cook <kees@outflux.net>
18
- // Copyright (C) 2008, 2010, 2017-2021 Albert Astals Cid <aacid@kde.org>
19
- // Copyright (C) 2009 Jakub Wilk <jwilk@jwilk.net>
20
- // Copyright (C) 2012 Fabio D'Urso <fabiodurso@hotmail.it>
21
- // Copyright (C) 2013 Thomas Freitag <Thomas.Freitag@alfa.de>
22
- // Copyright (C) 2013, 2017, 2018 Adrian Johnson <ajohnson@redneon.com>
23
- // Copyright (C) 2013 Adrian Perez de Castro <aperez@igalia.com>
24
- // Copyright (C) 2016, 2020 Jakub Alba <jakubalba@gmail.com>
25
- // Copyright (C) 2018 Klarälvdalens Datakonsult AB, a KDAB Group company, <info@kdab.com>. Work sponsored by the LiMux project of the city of Munich
26
- // Copyright (C) 2018 Adam Reichold <adam.reichold@t-online.de>
27
- // Copyright (C) 2020 Klarälvdalens Datakonsult AB, a KDAB Group company, <info@kdab.com>. Work sponsored by Technische Universität Dresden
28
- //
29
- // To see a description of the changes please see the Changelog file that
30
- // came with your tarball or type make ChangeLog if you are building from git
31
- //
32
- //========================================================================
33
-
34
- #ifndef OBJECT_H
35
- #define OBJECT_H
36
-
37
- #include <cassert>
38
- #include <set>
39
- #include <cstdio>
40
- #include <cstring>
41
- #include <climits>
42
- #include "goo/gmem.h"
43
- #include "goo/GooString.h"
44
- #include "goo/GooLikely.h"
45
- #include "Error.h"
46
- #include "poppler_private_export.h"
47
-
48
- #define OBJECT_TYPE_CHECK(wanted_type) \
49
- if (unlikely(type != wanted_type)) { \
50
- error(errInternal, 0, \
51
- "Call to Object where the object was type {0:d}, " \
52
- "not the expected type {1:d}", \
53
- type, wanted_type); \
54
- abort(); \
55
- }
56
-
57
- #define OBJECT_2TYPES_CHECK(wanted_type1, wanted_type2) \
58
- if (unlikely(type != wanted_type1) && unlikely(type != wanted_type2)) { \
59
- error(errInternal, 0, \
60
- "Call to Object where the object was type {0:d}, " \
61
- "not the expected type {1:d} or {2:d}", \
62
- type, wanted_type1, wanted_type2); \
63
- abort(); \
64
- }
65
-
66
- #define OBJECT_3TYPES_CHECK(wanted_type1, wanted_type2, wanted_type3) \
67
- if (unlikely(type != wanted_type1) && unlikely(type != wanted_type2) && unlikely(type != wanted_type3)) { \
68
- error(errInternal, 0, \
69
- "Call to Object where the object was type {0:d}, " \
70
- "not the expected type {1:d}, {2:d} or {3:d}", \
71
- type, wanted_type1, wanted_type2, wanted_type3); \
72
- abort(); \
73
- }
74
-
75
- #define CHECK_NOT_DEAD \
76
- if (unlikely(type == objDead)) { \
77
- error(errInternal, 0, "Call to dead object"); \
78
- abort(); \
79
- }
80
-
81
- class XRef;
82
- class Array;
83
- class Dict;
84
- class Stream;
85
-
86
- //------------------------------------------------------------------------
87
- // Ref
88
- //------------------------------------------------------------------------
89
-
90
- struct Ref
91
- {
92
- int num; // object number
93
- int gen; // generation number
94
-
95
- static constexpr Ref INVALID() { return { -1, -1 }; };
96
- };
97
-
98
- inline bool operator==(const Ref lhs, const Ref rhs) noexcept
99
- {
100
- return lhs.num == rhs.num && lhs.gen == rhs.gen;
101
- }
102
-
103
- inline bool operator!=(const Ref lhs, const Ref rhs) noexcept
104
- {
105
- return lhs.num != rhs.num || lhs.gen != rhs.gen;
106
- }
107
-
108
- inline bool operator<(const Ref lhs, const Ref rhs) noexcept
109
- {
110
- if (lhs.num != rhs.num) {
111
- return lhs.num < rhs.num;
112
- }
113
- return lhs.gen < rhs.gen;
114
- }
115
-
116
- namespace std {
117
-
118
- template<>
119
- struct hash<Ref>
120
- {
121
- using argument_type = Ref;
122
- using result_type = size_t;
123
-
124
- result_type operator()(const argument_type ref) const noexcept { return std::hash<int> {}(ref.num) ^ (std::hash<int> {}(ref.gen) << 1); }
125
- };
126
-
127
- }
128
-
129
- //------------------------------------------------------------------------
130
- // object types
131
- //------------------------------------------------------------------------
132
-
133
- enum ObjType
134
- {
135
- // simple objects
136
- objBool, // boolean
137
- objInt, // integer
138
- objReal, // real
139
- objString, // string
140
- objName, // name
141
- objNull, // null
142
-
143
- // complex objects
144
- objArray, // array
145
- objDict, // dictionary
146
- objStream, // stream
147
- objRef, // indirect reference
148
-
149
- // special objects
150
- objCmd, // command name
151
- objError, // error return from Lexer
152
- objEOF, // end of file return from Lexer
153
- objNone, // uninitialized object
154
-
155
- // poppler-only objects
156
- objInt64, // integer with at least 64-bits
157
- objHexString, // hex string
158
- objDead // and object after shallowCopy
159
- };
160
-
161
- constexpr int numObjTypes = 17; // total number of object types
162
-
163
- //------------------------------------------------------------------------
164
- // Object
165
- //------------------------------------------------------------------------
166
-
167
- class POPPLER_PRIVATE_EXPORT Object
168
- {
169
- public:
170
- Object() : type(objNone) { }
171
- ~Object() { free(); }
172
-
173
- explicit Object(bool boolnA)
174
- {
175
- type = objBool;
176
- booln = boolnA;
177
- }
178
- explicit Object(int intgA)
179
- {
180
- type = objInt;
181
- intg = intgA;
182
- }
183
- explicit Object(ObjType typeA) { type = typeA; }
184
- explicit Object(double realA)
185
- {
186
- type = objReal;
187
- real = realA;
188
- }
189
- explicit Object(GooString *stringA)
190
- {
191
- assert(stringA);
192
- type = objString;
193
- string = stringA;
194
- }
195
- Object(ObjType typeA, GooString *stringA)
196
- {
197
- assert(typeA == objHexString);
198
- assert(stringA);
199
- type = typeA;
200
- string = stringA;
201
- }
202
- Object(ObjType typeA, const char *stringA)
203
- {
204
- assert(typeA == objName || typeA == objCmd);
205
- assert(stringA);
206
- type = typeA;
207
- cString = copyString(stringA);
208
- }
209
- explicit Object(long long int64gA)
210
- {
211
- type = objInt64;
212
- int64g = int64gA;
213
- }
214
- explicit Object(Array *arrayA)
215
- {
216
- assert(arrayA);
217
- type = objArray;
218
- array = arrayA;
219
- }
220
- explicit Object(Dict *dictA)
221
- {
222
- assert(dictA);
223
- type = objDict;
224
- dict = dictA;
225
- }
226
- explicit Object(Stream *streamA)
227
- {
228
- assert(streamA);
229
- type = objStream;
230
- stream = streamA;
231
- }
232
- explicit Object(const Ref r)
233
- {
234
- type = objRef;
235
- ref = r;
236
- }
237
-
238
- template<typename T>
239
- Object(T) = delete;
240
-
241
- Object(Object &&other) noexcept
242
- {
243
- std::memcpy(reinterpret_cast<void *>(this), &other, sizeof(Object));
244
- other.type = objDead;
245
- }
246
-
247
- Object &operator=(Object &&other) noexcept
248
- {
249
- free();
250
-
251
- std::memcpy(reinterpret_cast<void *>(this), &other, sizeof(Object));
252
- other.type = objDead;
253
-
254
- return *this;
255
- }
256
-
257
- Object &operator=(const Object &other) = delete;
258
- Object(const Object &other) = delete;
259
-
260
- // Set object to null.
261
- void setToNull()
262
- {
263
- free();
264
- type = objNull;
265
- }
266
-
267
- // Copies all object types except
268
- // objArray, objDict, objStream whose refcount is increased by 1
269
- Object copy() const;
270
-
271
- // Deep copies all object types (recursively)
272
- // except objStream whose refcount is increased by 1
273
- Object deepCopy() const;
274
-
275
- // If object is a Ref, fetch and return the referenced object.
276
- // Otherwise, return a copy of the object.
277
- Object fetch(XRef *xref, int recursion = 0) const;
278
-
279
- // Type checking.
280
- ObjType getType() const
281
- {
282
- CHECK_NOT_DEAD;
283
- return type;
284
- }
285
- bool isBool() const
286
- {
287
- CHECK_NOT_DEAD;
288
- return type == objBool;
289
- }
290
- bool isInt() const
291
- {
292
- CHECK_NOT_DEAD;
293
- return type == objInt;
294
- }
295
- bool isReal() const
296
- {
297
- CHECK_NOT_DEAD;
298
- return type == objReal;
299
- }
300
- bool isNum() const
301
- {
302
- CHECK_NOT_DEAD;
303
- return type == objInt || type == objReal || type == objInt64;
304
- }
305
- bool isString() const
306
- {
307
- CHECK_NOT_DEAD;
308
- return type == objString;
309
- }
310
- bool isHexString() const
311
- {
312
- CHECK_NOT_DEAD;
313
- return type == objHexString;
314
- }
315
- bool isName() const
316
- {
317
- CHECK_NOT_DEAD;
318
- return type == objName;
319
- }
320
- bool isNull() const
321
- {
322
- CHECK_NOT_DEAD;
323
- return type == objNull;
324
- }
325
- bool isArray() const
326
- {
327
- CHECK_NOT_DEAD;
328
- return type == objArray;
329
- }
330
- bool isDict() const
331
- {
332
- CHECK_NOT_DEAD;
333
- return type == objDict;
334
- }
335
- bool isStream() const
336
- {
337
- CHECK_NOT_DEAD;
338
- return type == objStream;
339
- }
340
- bool isRef() const
341
- {
342
- CHECK_NOT_DEAD;
343
- return type == objRef;
344
- }
345
- bool isCmd() const
346
- {
347
- CHECK_NOT_DEAD;
348
- return type == objCmd;
349
- }
350
- bool isError() const
351
- {
352
- CHECK_NOT_DEAD;
353
- return type == objError;
354
- }
355
- bool isEOF() const
356
- {
357
- CHECK_NOT_DEAD;
358
- return type == objEOF;
359
- }
360
- bool isNone() const
361
- {
362
- CHECK_NOT_DEAD;
363
- return type == objNone;
364
- }
365
- bool isInt64() const
366
- {
367
- CHECK_NOT_DEAD;
368
- return type == objInt64;
369
- }
370
- bool isIntOrInt64() const
371
- {
372
- CHECK_NOT_DEAD;
373
- return type == objInt || type == objInt64;
374
- }
375
-
376
- // Special type checking.
377
- bool isName(const char *nameA) const { return type == objName && !strcmp(cString, nameA); }
378
- bool isDict(const char *dictType) const;
379
- bool isCmd(const char *cmdA) const { return type == objCmd && !strcmp(cString, cmdA); }
380
-
381
- // Accessors.
382
- bool getBool() const
383
- {
384
- OBJECT_TYPE_CHECK(objBool);
385
- return booln;
386
- }
387
- int getInt() const
388
- {
389
- OBJECT_TYPE_CHECK(objInt);
390
- return intg;
391
- }
392
- double getReal() const
393
- {
394
- OBJECT_TYPE_CHECK(objReal);
395
- return real;
396
- }
397
-
398
- // Note: integers larger than 2^53 can not be exactly represented by a double.
399
- // Where the exact value of integers up to 2^63 is required, use isInt64()/getInt64().
400
- double getNum() const
401
- {
402
- OBJECT_3TYPES_CHECK(objInt, objInt64, objReal);
403
- return type == objInt ? (double)intg : type == objInt64 ? (double)int64g : real;
404
- }
405
- double getNum(bool *ok) const
406
- {
407
- if (unlikely(type != objInt && type != objInt64 && type != objReal)) {
408
- *ok = false;
409
- return 0.;
410
- }
411
- return type == objInt ? (double)intg : type == objInt64 ? (double)int64g : real;
412
- }
413
- const GooString *getString() const
414
- {
415
- OBJECT_TYPE_CHECK(objString);
416
- return string;
417
- }
418
- const GooString *getHexString() const
419
- {
420
- OBJECT_TYPE_CHECK(objHexString);
421
- return string;
422
- }
423
- const char *getName() const
424
- {
425
- OBJECT_TYPE_CHECK(objName);
426
- return cString;
427
- }
428
- Array *getArray() const
429
- {
430
- OBJECT_TYPE_CHECK(objArray);
431
- return array;
432
- }
433
- Dict *getDict() const
434
- {
435
- OBJECT_TYPE_CHECK(objDict);
436
- return dict;
437
- }
438
- Stream *getStream() const
439
- {
440
- OBJECT_TYPE_CHECK(objStream);
441
- return stream;
442
- }
443
- Ref getRef() const
444
- {
445
- OBJECT_TYPE_CHECK(objRef);
446
- return ref;
447
- }
448
- int getRefNum() const
449
- {
450
- OBJECT_TYPE_CHECK(objRef);
451
- return ref.num;
452
- }
453
- int getRefGen() const
454
- {
455
- OBJECT_TYPE_CHECK(objRef);
456
- return ref.gen;
457
- }
458
- const char *getCmd() const
459
- {
460
- OBJECT_TYPE_CHECK(objCmd);
461
- return cString;
462
- }
463
- long long getInt64() const
464
- {
465
- OBJECT_TYPE_CHECK(objInt64);
466
- return int64g;
467
- }
468
- long long getIntOrInt64() const
469
- {
470
- OBJECT_2TYPES_CHECK(objInt, objInt64);
471
- return type == objInt ? intg : int64g;
472
- }
473
-
474
- // Array accessors.
475
- int arrayGetLength() const;
476
- void arrayAdd(Object &&elem);
477
- void arrayRemove(int i);
478
- Object arrayGet(int i, int recursion) const;
479
- const Object &arrayGetNF(int i) const;
480
-
481
- // Dict accessors.
482
- int dictGetLength() const;
483
- void dictAdd(char *key, Object &&val) = delete;
484
- void dictAdd(const char *key, Object &&val);
485
- void dictSet(const char *key, Object &&val);
486
- void dictRemove(const char *key);
487
- bool dictIs(const char *dictType) const;
488
- Object dictLookup(const char *key, int recursion = 0) const;
489
- const Object &dictLookupNF(const char *key) const;
490
- const char *dictGetKey(int i) const;
491
- Object dictGetVal(int i) const;
492
- const Object &dictGetValNF(int i) const;
493
-
494
- // Stream accessors.
495
- void streamReset();
496
- void streamClose();
497
- int streamGetChar();
498
- int streamGetChars(int nChars, unsigned char *buffer);
499
- void streamSetPos(Goffset pos, int dir = 0);
500
- Dict *streamGetDict() const;
501
-
502
- // Output.
503
- const char *getTypeName() const;
504
- void print(FILE *f = stdout) const;
505
-
506
- double getNumWithDefaultValue(double defaultValue) const
507
- {
508
- if (unlikely(type != objInt && type != objInt64 && type != objReal)) {
509
- return defaultValue;
510
- }
511
- return type == objInt ? (double)intg : type == objInt64 ? (double)int64g : real;
512
- }
513
-
514
- bool getBoolWithDefaultValue(bool defaultValue) const { return (type == objBool) ? booln : defaultValue; }
515
-
516
- private:
517
- // Free object contents.
518
- void free();
519
-
520
- ObjType type; // object type
521
- union { // value for each type:
522
- bool booln; // boolean
523
- int intg; // integer
524
- long long int64g; // 64-bit integer
525
- double real; // real
526
- GooString *string; // [hex] string
527
- char *cString; // name or command, depending on objType
528
- Array *array; // array
529
- Dict *dict; // dictionary
530
- Stream *stream; // stream
531
- Ref ref; // indirect reference
532
- };
533
- };
534
-
535
- //------------------------------------------------------------------------
536
- // Array accessors.
537
- //------------------------------------------------------------------------
538
-
539
- #include "Array.h"
540
-
541
- inline int Object::arrayGetLength() const
542
- {
543
- OBJECT_TYPE_CHECK(objArray);
544
- return array->getLength();
545
- }
546
-
547
- inline void Object::arrayAdd(Object &&elem)
548
- {
549
- OBJECT_TYPE_CHECK(objArray);
550
- array->add(std::move(elem));
551
- }
552
-
553
- inline void Object::arrayRemove(int i)
554
- {
555
- OBJECT_TYPE_CHECK(objArray);
556
- array->remove(i);
557
- }
558
-
559
- inline Object Object::arrayGet(int i, int recursion = 0) const
560
- {
561
- OBJECT_TYPE_CHECK(objArray);
562
- return array->get(i, recursion);
563
- }
564
-
565
- inline const Object &Object::arrayGetNF(int i) const
566
- {
567
- OBJECT_TYPE_CHECK(objArray);
568
- return array->getNF(i);
569
- }
570
-
571
- //------------------------------------------------------------------------
572
- // Dict accessors.
573
- //------------------------------------------------------------------------
574
-
575
- #include "Dict.h"
576
-
577
- inline int Object::dictGetLength() const
578
- {
579
- OBJECT_TYPE_CHECK(objDict);
580
- return dict->getLength();
581
- }
582
-
583
- inline void Object::dictAdd(const char *key, Object &&val)
584
- {
585
- OBJECT_TYPE_CHECK(objDict);
586
- dict->add(key, std::move(val));
587
- }
588
-
589
- inline void Object::dictSet(const char *key, Object &&val)
590
- {
591
- OBJECT_TYPE_CHECK(objDict);
592
- dict->set(key, std::move(val));
593
- }
594
-
595
- inline void Object::dictRemove(const char *key)
596
- {
597
- OBJECT_TYPE_CHECK(objDict);
598
- dict->remove(key);
599
- }
600
-
601
- inline bool Object::dictIs(const char *dictType) const
602
- {
603
- OBJECT_TYPE_CHECK(objDict);
604
- return dict->is(dictType);
605
- }
606
-
607
- inline bool Object::isDict(const char *dictType) const
608
- {
609
- return type == objDict && dictIs(dictType);
610
- }
611
-
612
- inline Object Object::dictLookup(const char *key, int recursion) const
613
- {
614
- OBJECT_TYPE_CHECK(objDict);
615
- return dict->lookup(key, recursion);
616
- }
617
-
618
- inline const Object &Object::dictLookupNF(const char *key) const
619
- {
620
- OBJECT_TYPE_CHECK(objDict);
621
- return dict->lookupNF(key);
622
- }
623
-
624
- inline const char *Object::dictGetKey(int i) const
625
- {
626
- OBJECT_TYPE_CHECK(objDict);
627
- return dict->getKey(i);
628
- }
629
-
630
- inline Object Object::dictGetVal(int i) const
631
- {
632
- OBJECT_TYPE_CHECK(objDict);
633
- return dict->getVal(i);
634
- }
635
-
636
- inline const Object &Object::dictGetValNF(int i) const
637
- {
638
- OBJECT_TYPE_CHECK(objDict);
639
- return dict->getValNF(i);
640
- }
641
-
642
- //------------------------------------------------------------------------
643
- // Stream accessors.
644
- //------------------------------------------------------------------------
645
-
646
- #include "Stream.h"
647
-
648
- inline void Object::streamReset()
649
- {
650
- OBJECT_TYPE_CHECK(objStream);
651
- stream->reset();
652
- }
653
-
654
- inline void Object::streamClose()
655
- {
656
- OBJECT_TYPE_CHECK(objStream);
657
- stream->close();
658
- }
659
-
660
- inline int Object::streamGetChar()
661
- {
662
- OBJECT_TYPE_CHECK(objStream);
663
- return stream->getChar();
664
- }
665
-
666
- inline int Object::streamGetChars(int nChars, unsigned char *buffer)
667
- {
668
- OBJECT_TYPE_CHECK(objStream);
669
- return stream->doGetChars(nChars, buffer);
670
- }
671
-
672
- inline Dict *Object::streamGetDict() const
673
- {
674
- OBJECT_TYPE_CHECK(objStream);
675
- return stream->getDict();
676
- }
677
-
678
- #endif