node-poppler 5.1.4 → 5.1.5

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 (172) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/package.json +10 -10
  3. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Annot.h +0 -1783
  4. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/AnnotStampImageHelper.h +0 -68
  5. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Array.h +0 -92
  6. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/BBoxOutputDev.h +0 -54
  7. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/CMap.h +0 -128
  8. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/CachedFile.h +0 -149
  9. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/CairoFontEngine.h +0 -122
  10. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/CairoOutputDev.h +0 -468
  11. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/CairoRescaleBox.h +0 -60
  12. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Catalog.h +0 -318
  13. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/CertificateInfo.h +0 -129
  14. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/CharCodeToUnicode.h +0 -143
  15. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/CharTypes.h +0 -24
  16. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/CurlCachedFile.h +0 -37
  17. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/CurlPDFDocBuilder.h +0 -32
  18. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/DateInfo.h +0 -44
  19. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Decrypt.h +0 -147
  20. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Dict.h +0 -126
  21. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Error.h +0 -59
  22. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/ErrorCodes.h +0 -54
  23. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/FDPDFDocBuilder.h +0 -36
  24. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/FILECacheLoader.h +0 -34
  25. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/FileSpec.h +0 -85
  26. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/FontEncodingTables.h +0 -20
  27. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/FontInfo.h +0 -109
  28. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Form.h +0 -734
  29. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Function.h +0 -251
  30. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Gfx.h +0 -373
  31. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/GfxFont.h +0 -466
  32. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/GfxState.h +0 -1759
  33. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/GfxState_helpers.h +0 -90
  34. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/GlobalParams.h +0 -221
  35. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Hints.h +0 -91
  36. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/JArithmeticDecoder.h +0 -131
  37. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/JBIG2Stream.h +0 -130
  38. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/JPEG2000Stream.h +0 -54
  39. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/JSInfo.h +0 -65
  40. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Lexer.h +0 -113
  41. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Linearization.h +0 -43
  42. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Link.h +0 -566
  43. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/LocalPDFDocBuilder.h +0 -32
  44. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/MarkedContentOutputDev.h +0 -132
  45. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Movie.h +0 -123
  46. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/NameToCharCode.h +0 -52
  47. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/NameToUnicodeTable.h +0 -4300
  48. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Object.h +0 -678
  49. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/OptionalContent.h +0 -117
  50. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Outline.h +0 -122
  51. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/OutputDev.h +0 -379
  52. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/PDFDoc.h +0 -419
  53. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/PDFDocBuilder.h +0 -47
  54. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/PDFDocEncoding.h +0 -43
  55. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/PDFDocFactory.h +0 -58
  56. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/PSOutputDev.h +0 -549
  57. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/PSTokenizer.h +0 -47
  58. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Page.h +0 -273
  59. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/PageTransition.h +0 -105
  60. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Parser.h +0 -76
  61. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/PopplerCache.h +0 -65
  62. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/PreScanOutputDev.h +0 -148
  63. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/ProfileData.h +0 -35
  64. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Rendition.h +0 -164
  65. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/SecurityHandler.h +0 -131
  66. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Sound.h +0 -82
  67. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/SplashOutputDev.h +0 -413
  68. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Stream-CCITT.h +0 -334
  69. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/Stream.h +0 -1504
  70. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/StructElement.h +0 -406
  71. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/StructTreeRoot.h +0 -89
  72. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/TextOutputDev.h +0 -918
  73. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/UTF.h +0 -112
  74. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/UnicodeCClassTables.h +0 -983
  75. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/UnicodeCompTables.h +0 -328
  76. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/UnicodeDecompTables.h +0 -7181
  77. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/UnicodeMap.h +0 -128
  78. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/UnicodeMapFuncs.h +0 -35
  79. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/UnicodeMapTables.h +0 -84
  80. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/UnicodeTypeTable.h +0 -49
  81. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/ViewerPreferences.h +0 -87
  82. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/XRef.h +0 -325
  83. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/cpp/poppler-destination.h +0 -69
  84. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/cpp/poppler-document.h +0 -135
  85. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/cpp/poppler-embedded-file.h +0 -55
  86. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/cpp/poppler-font-private.h +0 -68
  87. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/cpp/poppler-font.h +0 -95
  88. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/cpp/poppler-global.h +0 -132
  89. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/cpp/poppler-image.h +0 -74
  90. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/cpp/poppler-page-renderer.h +0 -77
  91. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/cpp/poppler-page-transition.h +0 -85
  92. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/cpp/poppler-page.h +0 -225
  93. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/cpp/poppler-rectangle.h +0 -66
  94. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/cpp/poppler-toc.h +0 -72
  95. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/cpp/poppler-version.h +0 -39
  96. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/cpp/poppler_cpp_export.h +0 -42
  97. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/fofi/FoFiBase.h +0 -66
  98. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/fofi/FoFiEncodings.h +0 -43
  99. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/fofi/FoFiIdentifier.h +0 -52
  100. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/fofi/FoFiTrueType.h +0 -190
  101. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/fofi/FoFiType1.h +0 -70
  102. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/fofi/FoFiType1C.h +0 -263
  103. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/glib/poppler-action.h +0 -454
  104. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/glib/poppler-annot.h +0 -333
  105. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/glib/poppler-attachment.h +0 -123
  106. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/glib/poppler-date.h +0 -32
  107. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/glib/poppler-document.h +0 -541
  108. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/glib/poppler-enums.h +0 -191
  109. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/glib/poppler-features.h +0 -88
  110. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/glib/poppler-form-field.h +0 -254
  111. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/glib/poppler-layer.h +0 -50
  112. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/glib/poppler-macros.h +0 -42
  113. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/glib/poppler-media.h +0 -80
  114. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/glib/poppler-movie.h +0 -81
  115. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/glib/poppler-page.h +0 -424
  116. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/glib/poppler-structure-element.h +0 -425
  117. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/glib/poppler.h +0 -259
  118. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/goo/GooCheckedOps.h +0 -116
  119. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/goo/GooLikely.h +0 -22
  120. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/goo/GooString.h +0 -262
  121. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/goo/GooTimer.h +0 -59
  122. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/goo/ImgWriter.h +0 -39
  123. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/goo/JpegWriter.h +0 -69
  124. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/goo/PNGWriter.h +0 -68
  125. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/goo/TiffWriter.h +0 -70
  126. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/goo/gdir.h +0 -96
  127. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/goo/gfile.h +0 -156
  128. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/goo/gmem.h +0 -201
  129. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/goo/grandom.h +0 -21
  130. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/goo/gstrtod.h +0 -45
  131. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/poppler-config.h +0 -155
  132. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/poppler_private_export.h +0 -42
  133. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/Splash.h +0 -336
  134. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashBitmap.h +0 -127
  135. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashClip.h +0 -131
  136. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashErrorCodes.h +0 -50
  137. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashFTFont.h +0 -71
  138. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashFTFontEngine.h +0 -72
  139. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashFTFontFile.h +0 -64
  140. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashFont.h +0 -116
  141. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashFontEngine.h +0 -89
  142. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashFontFile.h +0 -98
  143. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashFontFileID.h +0 -40
  144. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashGlyphBitmap.h +0 -23
  145. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashMath.h +0 -215
  146. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashPath.h +0 -138
  147. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashPattern.h +0 -107
  148. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashScreen.h +0 -87
  149. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashState.h +0 -132
  150. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashTypes.h +0 -248
  151. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashXPath.h +0 -95
  152. package/src/lib/win32/poppler-22.04.0/Library/include/poppler/splash/SplashXPathScanner.h +0 -136
  153. package/src/lib/win32/poppler-22.04.0/Library/lib/pkgconfig/poppler-cpp.pc +0 -12
  154. package/src/lib/win32/poppler-22.04.0/Library/lib/pkgconfig/poppler-glib.pc +0 -12
  155. package/src/lib/win32/poppler-22.04.0/Library/lib/pkgconfig/poppler.pc +0 -10
  156. package/src/lib/win32/poppler-22.04.0/Library/lib/poppler-cpp.lib +0 -0
  157. package/src/lib/win32/poppler-22.04.0/Library/lib/poppler-glib.lib +0 -0
  158. package/src/lib/win32/poppler-22.04.0/Library/lib/poppler.lib +0 -0
  159. package/src/lib/win32/poppler-22.04.0/Library/share/man/man1/pdfattach.1 +0 -60
  160. package/src/lib/win32/poppler-22.04.0/Library/share/man/man1/pdfdetach.1 +0 -94
  161. package/src/lib/win32/poppler-22.04.0/Library/share/man/man1/pdffonts.1 +0 -128
  162. package/src/lib/win32/poppler-22.04.0/Library/share/man/man1/pdfimages.1 +0 -265
  163. package/src/lib/win32/poppler-22.04.0/Library/share/man/man1/pdfinfo.1 +0 -198
  164. package/src/lib/win32/poppler-22.04.0/Library/share/man/man1/pdfseparate.1 +0 -60
  165. package/src/lib/win32/poppler-22.04.0/Library/share/man/man1/pdftocairo.1 +0 -346
  166. package/src/lib/win32/poppler-22.04.0/Library/share/man/man1/pdftohtml.1 +0 -118
  167. package/src/lib/win32/poppler-22.04.0/Library/share/man/man1/pdftoppm.1 +0 -230
  168. package/src/lib/win32/poppler-22.04.0/Library/share/man/man1/pdftops.1 +0 -267
  169. package/src/lib/win32/poppler-22.04.0/Library/share/man/man1/pdftotext.1 +0 -157
  170. package/src/lib/win32/poppler-22.04.0/Library/share/man/man1/pdfunite.1 +0 -43
  171. package/src/lib/win32/poppler-22.04.0/share/poppler/CMakeLists.txt +0 -309
  172. package/src/lib/win32/poppler-22.04.0/share/poppler/Makefile +0 -333
@@ -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