xmp_toolkit_ruby 0.0.2

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 (183) hide show
  1. checksums.yaml +7 -0
  2. data/.idea/.gitignore +8 -0
  3. data/.rspec +3 -0
  4. data/.rubocop.yml +88 -0
  5. data/.ruby-gemset +1 -0
  6. data/.ruby-version +1 -0
  7. data/AGENTS.md +72 -0
  8. data/CHANGELOG.md +45 -0
  9. data/LICENSE.txt +21 -0
  10. data/README.md +287 -0
  11. data/Rakefile +25 -0
  12. data/cliff.toml +138 -0
  13. data/docker/Dockerfile +87 -0
  14. data/docker/ProductConfig.cmake.patch +11 -0
  15. data/docker/ToolchainGCC.cmake.patch +11 -0
  16. data/exe/xmp_toolkit_ruby +8 -0
  17. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/LICENSE +31 -0
  18. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/build/XMP_BuildInfo.h +17 -0
  19. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/TXMPFiles.hpp +853 -0
  20. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/TXMPIterator.hpp +234 -0
  21. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/TXMPMeta.hpp +1753 -0
  22. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/TXMPUtils.hpp +967 -0
  23. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMP.hpp +98 -0
  24. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMP.incl_cpp +69 -0
  25. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Interfaces/BaseInterfaces/IConfigurable.h +225 -0
  26. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Interfaces/BaseInterfaces/ISharedObject.h +71 -0
  27. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Interfaces/BaseInterfaces/IThreadSafe.h +76 -0
  28. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Interfaces/BaseInterfaces/IVersionable.h +71 -0
  29. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Interfaces/IConfigurationManager.h +167 -0
  30. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Interfaces/IError.h +377 -0
  31. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Interfaces/IErrorNotifier.h +52 -0
  32. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Interfaces/IMemoryAllocator.h +65 -0
  33. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Interfaces/IObjectFactory.h +90 -0
  34. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Interfaces/IUTF8String.h +504 -0
  35. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Utilities/TWrapperFunctions.h +252 -0
  36. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Utilities/TWrapperFunctions2.h +564 -0
  37. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/XMPCommonDefines.h +194 -0
  38. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/XMPCommonErrorCodes.h +114 -0
  39. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/XMPCommonFwdDeclarations.h +158 -0
  40. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/XMPCommonLatestInterfaceVersions.h +51 -0
  41. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/source/IConfigurable.cpp +204 -0
  42. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/source/IConfigurationManager.cpp +92 -0
  43. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/source/IError.cpp +207 -0
  44. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/source/IErrorNotifier.cpp +26 -0
  45. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/source/IUTF8String.cpp +299 -0
  46. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/IArrayNode.h +303 -0
  47. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/IClientDOMParser.h +88 -0
  48. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/IClientDOMSerializer.h +94 -0
  49. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/ICompositeNode.h +331 -0
  50. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/ICoreConfigurationManager.h +107 -0
  51. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/ICoreObjectFactory.h +279 -0
  52. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/IDOMImplementationRegistry.h +150 -0
  53. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/IDOMParser.h +181 -0
  54. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/IDOMSerializer.h +120 -0
  55. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/IMetadata.h +145 -0
  56. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/IMetadataConverterUtils.h +116 -0
  57. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/INameSpacePrefixMap.h +236 -0
  58. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/INode.h +582 -0
  59. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/INodeIterator.h +193 -0
  60. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/IPath.h +212 -0
  61. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/IPathSegment.h +225 -0
  62. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/ISimpleNode.h +150 -0
  63. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/IStructureNode.h +306 -0
  64. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/XMPCoreDefines.h +94 -0
  65. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/XMPCoreErrorCodes.h +116 -0
  66. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/XMPCoreFwdDeclarations.h +325 -0
  67. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/XMPCoreLatestInterfaceVersions.h +97 -0
  68. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/IArrayNode.cpp +163 -0
  69. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/IClientDOMParser.cpp +76 -0
  70. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/IClientDOMSerializer.cpp +73 -0
  71. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/ICompositeNode.cpp +121 -0
  72. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/ICoreConfigurationManager.cpp +88 -0
  73. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/ICoreObjectFactory.cpp +83 -0
  74. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/IDOMImplementationRegistry.cpp +122 -0
  75. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/IDOMParser.cpp +116 -0
  76. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/IDOMSerializer.cpp +109 -0
  77. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/IMetadata.cpp +113 -0
  78. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/IMetadataConverterUtils.cpp +92 -0
  79. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/INameSpacePrefixMap.cpp +187 -0
  80. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/INode.cpp +377 -0
  81. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/INodeIterator.cpp +105 -0
  82. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/IPath.cpp +157 -0
  83. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/IPathSegment.cpp +146 -0
  84. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/ISimpleNode.cpp +111 -0
  85. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/IStructureNode.cpp +104 -0
  86. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMP_Const.h +1590 -0
  87. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMP_Environment.h +223 -0
  88. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMP_IO.hpp +169 -0
  89. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMP_Version.h +52 -0
  90. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/client-glue/TXMPFiles.incl_cpp +484 -0
  91. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/client-glue/TXMPIterator.incl_cpp +223 -0
  92. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/client-glue/TXMPMeta.incl_cpp +917 -0
  93. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/client-glue/TXMPUtils.incl_cpp +445 -0
  94. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/client-glue/WXMPFiles.hpp +281 -0
  95. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/client-glue/WXMPIterator.hpp +74 -0
  96. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/client-glue/WXMPMeta.hpp +635 -0
  97. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/client-glue/WXMPUtils.hpp +314 -0
  98. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/client-glue/WXMP_Common.hpp +132 -0
  99. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/libraries/i80386linux_x64/debug/libXMPCore.so +0 -0
  100. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/libraries/i80386linux_x64/debug/libXMPCoreStatic.a +0 -0
  101. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/libraries/i80386linux_x64/debug/libXMPFiles.so +0 -0
  102. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/libraries/i80386linux_x64/debug/libXMPFilesStatic.a +0 -0
  103. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/libraries/macintosh/universal/Debug/libXMPCoreStatic.a +0 -0
  104. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/libraries/macintosh/universal/Debug/libXMPFilesStatic.a +0 -0
  105. data/ext/xmp_toolkit_ruby/extconf.rb +101 -0
  106. data/ext/xmp_toolkit_ruby/xmp_toolkit.cpp +321 -0
  107. data/ext/xmp_toolkit_ruby/xmp_toolkit.hpp +69 -0
  108. data/ext/xmp_toolkit_ruby/xmp_toolkit_ruby.cpp +44 -0
  109. data/lib/xmp_toolkit_ruby/cli.rb +95 -0
  110. data/lib/xmp_toolkit_ruby/namespaces.rb +77 -0
  111. data/lib/xmp_toolkit_ruby/plugins/LICENSE +31 -0
  112. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/i80386linux/i80386linux/PDF_Handler.resources/MODULE_IDENTIFIER.txt +1 -0
  113. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/i80386linux/i80386linux/PDF_Handler.resources/XMPPLUGINUIDS.txt +31 -0
  114. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/i80386linux/i80386linux/PDF_Handler.xpi +0 -0
  115. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/i80386linux/i80386linux/libMiniPDFL.so +0 -0
  116. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/i80386linux/i80386linux_x64/PDF_Handler.resources/MODULE_IDENTIFIER.txt +1 -0
  117. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/i80386linux/i80386linux_x64/PDF_Handler.resources/XMPPLUGINUIDS.txt +31 -0
  118. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/i80386linux/i80386linux_x64/PDF_Handler.xpi +0 -0
  119. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/i80386linux/i80386linux_x64/libMiniPDFL.so +0 -0
  120. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/PDF_Handler +0 -0
  121. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/Info.plist +52 -0
  122. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MODULE_IDENTIFIER.txt +1 -0
  123. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MiniPDFL.framework/MiniPDFL +0 -0
  124. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MiniPDFL.framework/Resources/English.lproj/InfoPlist.strings +0 -0
  125. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MiniPDFL.framework/Resources/Info.plist +35 -0
  126. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MiniPDFL.framework/Versions/A/MiniPDFL +0 -0
  127. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MiniPDFL.framework/Versions/A/Resources/English.lproj/InfoPlist.strings +0 -0
  128. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MiniPDFL.framework/Versions/A/Resources/Info.plist +35 -0
  129. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MiniPDFL.framework/Versions/A/_CodeSignature/CodeResources +146 -0
  130. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MiniPDFL.framework/Versions/Current/MiniPDFL +0 -0
  131. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MiniPDFL.framework/Versions/Current/Resources/English.lproj/InfoPlist.strings +0 -0
  132. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MiniPDFL.framework/Versions/Current/Resources/Info.plist +35 -0
  133. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MiniPDFL.framework/Versions/Current/_CodeSignature/CodeResources +146 -0
  134. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/XMPPLUGINUIDS.txt +31 -0
  135. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/PDF_Handler +0 -0
  136. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/Info.plist +52 -0
  137. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MODULE_IDENTIFIER.txt +1 -0
  138. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MiniPDFL.framework/MiniPDFL +0 -0
  139. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MiniPDFL.framework/Resources/English.lproj/InfoPlist.strings +0 -0
  140. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MiniPDFL.framework/Resources/Info.plist +35 -0
  141. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MiniPDFL.framework/Versions/A/MiniPDFL +0 -0
  142. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MiniPDFL.framework/Versions/A/Resources/English.lproj/InfoPlist.strings +0 -0
  143. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MiniPDFL.framework/Versions/A/Resources/Info.plist +35 -0
  144. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MiniPDFL.framework/Versions/A/_CodeSignature/CodeResources +146 -0
  145. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MiniPDFL.framework/Versions/Current/MiniPDFL +0 -0
  146. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MiniPDFL.framework/Versions/Current/Resources/English.lproj/InfoPlist.strings +0 -0
  147. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MiniPDFL.framework/Versions/Current/Resources/Info.plist +35 -0
  148. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MiniPDFL.framework/Versions/Current/_CodeSignature/CodeResources +146 -0
  149. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/XMPPLUGINUIDS.txt +31 -0
  150. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/_CodeSignature/CodeResources +216 -0
  151. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/PDF_Handler +0 -0
  152. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/Info.plist +52 -0
  153. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MODULE_IDENTIFIER.txt +1 -0
  154. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MiniPDFL.framework/MiniPDFL +0 -0
  155. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MiniPDFL.framework/Resources/English.lproj/InfoPlist.strings +0 -0
  156. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MiniPDFL.framework/Resources/Info.plist +35 -0
  157. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MiniPDFL.framework/Versions/A/MiniPDFL +0 -0
  158. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MiniPDFL.framework/Versions/A/Resources/English.lproj/InfoPlist.strings +0 -0
  159. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MiniPDFL.framework/Versions/A/Resources/Info.plist +35 -0
  160. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MiniPDFL.framework/Versions/A/_CodeSignature/CodeResources +146 -0
  161. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MiniPDFL.framework/Versions/Current/MiniPDFL +0 -0
  162. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MiniPDFL.framework/Versions/Current/Resources/English.lproj/InfoPlist.strings +0 -0
  163. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MiniPDFL.framework/Versions/Current/Resources/Info.plist +35 -0
  164. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MiniPDFL.framework/Versions/Current/_CodeSignature/CodeResources +146 -0
  165. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/XMPPLUGINUIDS.txt +31 -0
  166. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/_CodeSignature/CodeResources +216 -0
  167. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/resource/linux/PDF_Handler.exp +11 -0
  168. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/resource/mac/PDF_Handler.exp +2 -0
  169. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/resource/mac/PDF_Handler.plist +28 -0
  170. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/resource/mac/PDF_HandlerPList.h +12 -0
  171. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/resource/win/CopyPDFL.bat +14 -0
  172. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/resource/win/PDF_Handler-32.rc +8 -0
  173. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/resource/win/PDF_Handler-64.rc +8 -0
  174. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/resource/win/PDF_Handler.def +9 -0
  175. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/windows/windows_x64/MiniPDFL.dll +0 -0
  176. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/windows/windows_x64/PDF_Handler.xpi +0 -0
  177. data/lib/xmp_toolkit_ruby/version.rb +5 -0
  178. data/lib/xmp_toolkit_ruby/xmp_file_format.rb +87 -0
  179. data/lib/xmp_toolkit_ruby/xmp_file_handler_flags.rb +49 -0
  180. data/lib/xmp_toolkit_ruby.rb +237 -0
  181. data/sig/xmp_toolkit_ruby.rbs +4 -0
  182. data/tasks/changelog.rake +29 -0
  183. metadata +357 -0
@@ -0,0 +1,98 @@
1
+ #ifndef __XMP_hpp__
2
+ #define __XMP_hpp__ 1
3
+
4
+ // =================================================================================================
5
+ // Copyright 2002 Adobe
6
+ // All Rights Reserved.
7
+ //
8
+ // NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms
9
+ // of the Adobe license agreement accompanying it.
10
+ // =================================================================================================
11
+
12
+ // ================================================================================================
13
+ /// \file XMP.hpp
14
+ /// \brief Overall header file for the XMP Toolkit
15
+ ///
16
+ /// This is an overall header file, the only one that C++ clients should include.
17
+ ///
18
+ /// The full client API is in the \c TXMPMeta.hpp, \c TXMPIterator.hpp, \c TXMPUtils.hpp headers.
19
+ /// Read these for information, but do not include them directly. The \c TXMP... classes are C++
20
+ /// template classes that must be instantiated with a string class such as \c std::string. The
21
+ /// string class is used to return text strings for property values, serialized XMP, and so on.
22
+ /// Clients must also compile \c XMP.incl_cpp to ensure that all client-side glue code is generated.
23
+ /// This should be done by including it in exactly one client source file.
24
+ ///
25
+ /// There are two C preprocessor macros that simplify use of the templates:
26
+ ///
27
+ /// \li \c TXMP_STRING_TYPE - Define this as the string class to use with the template. You will get
28
+ /// the template headers included and typedefs (\c SXMPMeta, and so on) to use in your code.
29
+ ///
30
+ /// \li \c TXMP_EXPAND_INLINE - Define this as 1 if you want to have the template functions expanded
31
+ /// inline in your code. Leave it undefined, or defined as 0, to use out-of-line instantiations of
32
+ /// the template functions. Compiling \c XMP.incl_cpp generates explicit out-of-line
33
+ /// instantiations if \c TXMP_EXPAND_INLINE is off.
34
+ ///
35
+ /// The template parameter, class \c tStringObj, must have the following member functions (which
36
+ /// match those for \c std::string):
37
+ ///
38
+ /// <pre>
39
+ /// tStringObj& assign ( const char * str, size_t len )
40
+ /// size_t size() const
41
+ /// const char * c_str() const
42
+ /// </pre>
43
+ ///
44
+ /// The string class must be suitable for at least UTF-8. This is the encoding used for all general
45
+ /// values, and is the default encoding for serialized XMP. The string type must also be suitable
46
+ /// for UTF-16 or UTF-32 if those serialization encodings are used. This mainly means tolerating
47
+ /// embedded 0 bytes, which \c std::string does.
48
+ // ================================================================================================
49
+
50
+ /// /c XMP_Environment.h must be the first included header.
51
+ #include "XMP_Environment.h"
52
+
53
+ #include "XMP_Version.h"
54
+ #include "XMP_Const.h"
55
+
56
+ #if XMP_WinBuild
57
+ #if XMP_DebugBuild
58
+ #pragma warning ( push, 4 )
59
+ #else
60
+ #pragma warning ( push, 3 )
61
+ #endif
62
+ #pragma warning ( disable : 4702 ) // unreachable code
63
+ #pragma warning ( disable : 4800 ) // forcing value to bool 'true' or 'false' (performance warning)
64
+ #endif
65
+
66
+ #if defined ( TXMP_STRING_TYPE )
67
+
68
+ #include "TXMPMeta.hpp"
69
+ #include "TXMPIterator.hpp"
70
+ #include "TXMPUtils.hpp"
71
+ typedef class TXMPMeta <TXMP_STRING_TYPE> SXMPMeta; // For client convenience.
72
+ typedef class TXMPIterator <TXMP_STRING_TYPE> SXMPIterator;
73
+ typedef class TXMPUtils <TXMP_STRING_TYPE> SXMPUtils;
74
+ #if TXMP_EXPAND_INLINE
75
+ #error "TXMP_EXPAND_INLINE is not working at present. Please don't use it."
76
+ #include "client-glue/TXMPMeta.incl_cpp"
77
+ #include "client-glue/TXMPIterator.incl_cpp"
78
+ #include "client-glue/TXMPUtils.incl_cpp"
79
+ #include "client-glue/TXMPFiles.incl_cpp"
80
+ #endif
81
+
82
+ #if XMP_INCLUDE_XMPFILES
83
+ #include "TXMPFiles.hpp" // ! Needs typedef for SXMPMeta.
84
+ typedef class TXMPFiles <TXMP_STRING_TYPE> SXMPFiles;
85
+ #if TXMP_EXPAND_INLINE
86
+ #include "client-glue/TXMPFiles.incl_cpp"
87
+ #endif
88
+ #endif
89
+
90
+ #endif // TXMP_STRING_TYPE
91
+
92
+ #if XMP_WinBuild
93
+ #pragma warning ( pop )
94
+ #endif
95
+
96
+ // =================================================================================================
97
+
98
+ #endif // __XMP_hpp__
@@ -0,0 +1,69 @@
1
+ #ifndef __XMP_incl_cpp__
2
+ #define __XMP_incl_cpp__ 1
3
+
4
+ // =================================================================================================
5
+ // ADOBE SYSTEMS INCORPORATED
6
+ // Copyright 2002 Adobe Systems Incorporated
7
+ // All Rights Reserved
8
+ //
9
+ // NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms
10
+ // of the Adobe license agreement accompanying it.
11
+ // =================================================================================================
12
+
13
+ // ================================================================================================
14
+ /// \file XMP.incl_cpp
15
+ /// \brief Overall client glue file for the XMP toolkit.
16
+ ///
17
+ /// This is an overall client source file of XMP toolkit glue, the only XMP-specific one that
18
+ /// clients should build in projects. This ensures that all of the client-side glue code for the
19
+ /// XMP toolkit gets compiled.
20
+ ///
21
+ /// You cannot compile this file directly, because the template's string type must be declared and
22
+ /// only the client can do that. Instead, include this in some other source file. For example,
23
+ /// to use <tt>std::string</tt> you only need these two lines:
24
+ ///
25
+ /// \code
26
+ /// #include <string>
27
+ /// #include "XMP.incl_cpp"
28
+ /// \endcode
29
+
30
+
31
+ #include "XMP.hpp" // ! This must be the first include!
32
+
33
+ #define XMP_ClientBuild 1
34
+
35
+ #if XMP_WinBuild
36
+ #if XMP_DebugBuild
37
+ #pragma warning ( push, 4 )
38
+ #else
39
+ #pragma warning ( push, 3 )
40
+ #endif
41
+
42
+ #pragma warning ( disable : 4127 ) // conditional expression is constant
43
+ #pragma warning ( disable : 4189 ) // local variable is initialized but not referenced
44
+ #pragma warning ( disable : 4702 ) // unreachable code
45
+ #pragma warning ( disable : 4800 ) // forcing value to bool 'true' or 'false' (performance warning)
46
+ #endif
47
+
48
+ #if defined ( TXMP_STRING_TYPE ) && (! TXMP_EXPAND_INLINE)
49
+
50
+ // We're using a single out of line instantiation. Do it here.
51
+
52
+ #include "client-glue/TXMPMeta.incl_cpp"
53
+ #include "client-glue/TXMPIterator.incl_cpp"
54
+ #include "client-glue/TXMPUtils.incl_cpp"
55
+ template class TXMPMeta <TXMP_STRING_TYPE>;
56
+ template class TXMPIterator <TXMP_STRING_TYPE>;
57
+ template class TXMPUtils <TXMP_STRING_TYPE>;
58
+ #if XMP_INCLUDE_XMPFILES
59
+ #include "client-glue/TXMPFiles.incl_cpp"
60
+ template class TXMPFiles <TXMP_STRING_TYPE>;
61
+ #endif
62
+
63
+ #endif
64
+
65
+ #if XMP_WinBuild
66
+ #pragma warning ( pop )
67
+ #endif
68
+
69
+ #endif // __XMP_incl_cpp__
@@ -0,0 +1,225 @@
1
+ //!
2
+ //! @file IConfigurable.h
3
+ //!
4
+
5
+ #ifndef IConfigurable_h__
6
+ #define IConfigurable_h__ 1
7
+
8
+ // =================================================================================================
9
+ // Copyright Adobe
10
+ // Copyright 2014 Adobe
11
+ // All Rights Reserved
12
+ //
13
+ // NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms
14
+ // of the Adobe license agreement accompanying it.
15
+ // =================================================================================================
16
+
17
+ #include "XMPCommon/XMPCommonFwdDeclarations.h"
18
+
19
+ namespace AdobeXMPCommon {
20
+
21
+ //!
22
+ //! \brief Interface that allows to attach various key-value parameters to the underlying object.
23
+ //!
24
+ //! \details Key is an unsigned 64-bit integer value which can be a char buffer of eight characters also.
25
+ //! \note For all value types except user data ( const void * ) or char buffer ( const char * ) a copy is made
26
+ //! and is stored, so the scope is maintained internally. But for user data ( const void * ) or char buffer
27
+ //! ( const char * ) its clients responsibility to make sure these pointers remain valid through out the life
28
+ //! span of the object or objects derived from it.
29
+ //!
30
+ class XMP_PUBLIC IConfigurable
31
+ {
32
+ public:
33
+
34
+ //!
35
+ //! @brief Indicates various types of parameter values.
36
+ //!
37
+ typedef enum {
38
+ //!< Data type is none.
39
+ kDTNone = 0,
40
+ //!< Data type is boolean.
41
+ kDTBool = 1 << 0,
42
+ //!< Data type is unsigned 64 bit integer.
43
+ kDTUint64 = 1 << 1,
44
+ //!< Data type is signed 64 bit integer.
45
+ kDTInt64 = 1 << 2,
46
+ //!< Data type is character.
47
+ kDTChar = 1 << 3,
48
+ //!< Data type is double.
49
+ kDTDouble = 1 << 4,
50
+ //!< Data type is char buffer.
51
+ kDTConstCharBuffer = 1 << 5,
52
+ //!< Data type is user data ( pointer to const void ).
53
+ kDTConstVoidPtr = 1 << 6,
54
+
55
+ //!< Maximum value this enum can hold.
56
+ kDTAll = 0xFFFFFFFF
57
+ } eDataType;
58
+
59
+ //!
60
+ //! @{
61
+ //! @brief Add/Change a value of a parameter.
62
+ //! \param[in] key An unsigned 64 bit integer value indicating the key.
63
+ //! \param[in] value New value of the parameter.
64
+ //! \attention Error is thrown in case
65
+ //! - the previous type of value associated with key is of different type.
66
+ //! - the type of value associated with key is not as expected.
67
+ //!
68
+ virtual void APICALL SetParameter( const uint64 & key, bool value ) = 0;
69
+ virtual void APICALL SetParameter( const uint64 & key, uint64 value ) = 0;
70
+ virtual void APICALL SetParameter( const uint64 & key, int64 value ) = 0;
71
+ virtual void APICALL SetParameter( const uint64 & key, double value ) = 0;
72
+ virtual void APICALL SetParameter( const uint64 & key, char value ) = 0;
73
+ virtual void APICALL SetParameter( const uint64 & key, const char * value ) = 0;
74
+ virtual void APICALL SetParameter( const uint64 & key, const void * value ) = 0;
75
+ //! @}
76
+
77
+ //!
78
+ //! @brief Removes a particular parameter if present.
79
+ //! \param[in] key An unsigned 64 bit integer value indicating the key.
80
+ //! \return True in case key was present and is deleted.
81
+ //! \attention Error is thrown in case
82
+ //! - key is a must have for the underlying object.
83
+ //!
84
+ virtual bool APICALL RemoveParameter( const uint64 & key ) = 0;
85
+
86
+ //!
87
+ //! @{
88
+ //! @brief Get the value of a parameter if present.
89
+ //! \param[in] key An unsigned 64 bit integer value indicating the key.
90
+ //! \param[out] value The value of the parameter.
91
+ //! \return false if no such parameter is present, otherwise true.
92
+ //! \attention Error is thrown in case the type of the parameter is not
93
+ //! the one client is asking for.
94
+ //!
95
+ virtual bool APICALL GetParameter( const uint64 & key, bool & value ) const = 0;
96
+ virtual bool APICALL GetParameter( const uint64 & key, uint64 & value ) const = 0;
97
+ virtual bool APICALL GetParameter( const uint64 & key, int64 & value ) const = 0;
98
+ virtual bool APICALL GetParameter( const uint64 & key, double & value ) const = 0;
99
+ virtual bool APICALL GetParameter( const uint64 & key, char & value ) const = 0;
100
+ virtual bool APICALL GetParameter( const uint64 & key, const char * & value ) const = 0;
101
+ virtual bool APICALL GetParameter( const uint64 & key, const void * & value ) const = 0;
102
+ //! @}
103
+
104
+ //!
105
+ //! @brief Get all the keys of the parameters associated with the object.
106
+ //! \details Provide a std::vector containing the keys of all the parameters associated with the object.
107
+ //! \return A std::vector of unsigned 64 bit integers.
108
+ //!
109
+ virtual std::vector< uint64 > APICALL GetAllParameters() const = 0;
110
+
111
+ //!
112
+ //! @brief Get the number of parameters associated with the object.
113
+ //!
114
+ virtual sizet APICALL Size() const __NOTHROW__ = 0;
115
+
116
+ //!
117
+ //! @brief Get the value type of a particular parameter.
118
+ //! \param[in] key An unsigned 64 bit integer value indicating the key.
119
+ //! \return A value of type eDataType indicating the type of value the parameter is supposed to hold.
120
+ //! \note return kDTNone in case no such key is associated with the object.
121
+ //!
122
+ virtual eDataType APICALL GetDataType( const uint64 & key ) const = 0;
123
+
124
+ //!
125
+ //! @brief Utility function to convert character buffer ( maximum of 8 characters ) to uint64 representation.
126
+ //! \param[in] key A pointer to const char buffer, maximum characters used are 8 provided there is no
127
+ //! null character present in the buffer between 1st to 8 characters, otherwise characters upto NULL
128
+ //! character (excluding NULL) are read.
129
+ //! \return A 64-bit unsigned integer representing the first 8 characters of the character buffer.
130
+ //! \note Return 0 in case key is NULL.
131
+ //!
132
+ static uint64 ConvertCharBufferToUint64( const char * key ) {
133
+ uint64 keyAsuint64 = 0;
134
+ if ( key ) {
135
+ for ( int i = 0; i < 8 && key[ i ] != '\0'; i++ ) {
136
+ keyAsuint64 = keyAsuint64 << 8;
137
+ keyAsuint64 += ( unsigned char ) key[ i ];
138
+ }
139
+ }
140
+ return keyAsuint64;
141
+ }
142
+
143
+ //!
144
+ //! @brief A union data type to store all kind of values.
145
+ //!
146
+ union CombinedDataValue {
147
+ bool boolValue;
148
+ uint32 uint32Value;
149
+ uint64 uint64Value;
150
+ int64 int64Value;
151
+ double doubleValue;
152
+ char charValue;
153
+ const char * constCharPtrValue;
154
+ const void * constVoidPtrValue;
155
+ };
156
+
157
+ protected:
158
+ //! \cond XMP_INTERNAL_DOCUMENTATION
159
+ // all safe functions
160
+ virtual void APICALL setParameter( const uint64 & key, uint32 dataType, const CombinedDataValue & dataValue, pcIError_base & error ) __NOTHROW__ = 0;
161
+ virtual uint32 APICALL removeParameter( const uint64 & key, pcIError_base & error ) __NOTHROW__ = 0;
162
+ virtual uint32 APICALL getParameter( const uint64 & key, uint32 dataType, CombinedDataValue & value, pcIError_base & error ) const __NOTHROW__ = 0;
163
+ virtual void APICALL getAllParameters( uint64 * array, sizet count ) const __NOTHROW__ = 0;
164
+ virtual uint32 APICALL getDataType( const uint64 & key, pcIError_base & error ) const __NOTHROW__ = 0;
165
+ //! \endcond
166
+
167
+ protected:
168
+ //!
169
+ //! protected Virtual Destructor
170
+ //!
171
+ virtual ~IConfigurable() __NOTHROW__ {};
172
+
173
+ friend class IConfigurableProxy;
174
+ #ifdef FRIEND_CLASS_DECLARATION
175
+ FRIEND_CLASS_DECLARATION();
176
+ #endif
177
+ REQ_FRIEND_CLASS_DECLARATION();
178
+ };
179
+
180
+ //! \cond XMP_INTERNAL_DOCUMENTATION
181
+ #if !BUILDING_XMPCOMMON_LIB && !SOURCE_COMPILING_XMP_ALL
182
+
183
+ class IConfigurableProxy
184
+ : public virtual IConfigurable {
185
+ public:
186
+ IConfigurableProxy( pIConfigurable configurable );
187
+ virtual void APICALL SetParameter( const uint64 & key, bool value );
188
+ virtual void APICALL SetParameter( const uint64 & key, uint64 value );
189
+ virtual void APICALL SetParameter( const uint64 & key, int64 value );
190
+ virtual void APICALL SetParameter( const uint64 & key, double value );
191
+ virtual void APICALL SetParameter( const uint64 & key, char value );
192
+ virtual void APICALL SetParameter( const uint64 & key, const char * value );
193
+ virtual void APICALL SetParameter( const uint64 & key, const void * value );
194
+ virtual void APICALL setParameter( const uint64 & key, uint32 dataType, const CombinedDataValue & dataValue, pcIError_base & error ) __NOTHROW__;
195
+
196
+ virtual bool APICALL RemoveParameter( const uint64 & key );
197
+ virtual uint32 APICALL removeParameter( const uint64 & key, pcIError_base & error ) __NOTHROW__;
198
+
199
+ virtual bool APICALL GetParameter( const uint64 & key, bool & value ) const;
200
+ virtual bool APICALL GetParameter( const uint64 & key, uint64 & value ) const;
201
+ virtual bool APICALL GetParameter( const uint64 & key, int64 & value ) const;
202
+ virtual bool APICALL GetParameter( const uint64 & key, double & value ) const;
203
+ virtual bool APICALL GetParameter( const uint64 & key, char & value ) const;
204
+ virtual bool APICALL GetParameter( const uint64 & key, const char * & value ) const;
205
+ virtual bool APICALL GetParameter( const uint64 & key, const void * & value ) const;
206
+ virtual uint32 APICALL getParameter( const uint64 & key, uint32 dataType, CombinedDataValue & value, pcIError_base & error ) const __NOTHROW__;
207
+
208
+ virtual std::vector< uint64 > APICALL GetAllParameters() const;
209
+ virtual void APICALL getAllParameters( uint64 * array, sizet count ) const __NOTHROW__;
210
+
211
+ virtual sizet APICALL Size() const __NOTHROW__;
212
+
213
+ virtual eDataType APICALL GetDataType( const uint64 & key ) const;
214
+ virtual uint32 APICALL getDataType( const uint64 & key, pcIError_base & error ) const __NOTHROW__;
215
+
216
+ protected:
217
+ pIConfigurable mConfigurableRawPtr;
218
+ };
219
+
220
+ #endif // !BUILDING_XMPCOMMON_LIB && !SOURCE_COMPILING_XMP_ALL
221
+ //! \endcond
222
+
223
+ }
224
+
225
+ #endif // IConfigurable_h__
@@ -0,0 +1,71 @@
1
+ #ifndef __ISharedObject_h__
2
+ #define __ISharedObject_h__ 1
3
+
4
+ // =================================================================================================
5
+ // Copyright 2014 Adobe
6
+ // All Rights Reserved.
7
+ //
8
+ // NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms
9
+ // of the Adobe license agreement accompanying it.
10
+ // =================================================================================================
11
+
12
+ #include "XMPCommon/XMPCommonFwdDeclarations.h"
13
+
14
+ namespace AdobeXMPCommon {
15
+
16
+ //!
17
+ //! \brief Interface that serves as the base interface of all the externally exposed interfaces.
18
+ //! \details This allows all interfaces to be used as shared pointers so as to reduce the burden of
19
+ //! scope management from the client or library code. It makes the heap allocated object to be self manged in
20
+ //! in terms of memory and life. This provides functions so as to inform the actual object when a shared pointer
21
+ //! is created or destroyed and appropriately release the memory during the last call to Release.
22
+ //! \attention Supports Multi-threading at object level through use of Atomic Variables.
23
+ //! \note Any interface which inherits from this needs to make sure that its destructor is declared protected
24
+ //! so that unknowingly also client of this object cannot call delete on the object.
25
+ //!
26
+
27
+ class XMP_PUBLIC ISharedObject {
28
+ public:
29
+
30
+ //!
31
+ //! @brief Called by the clients of the object to indicate that he has acquired the shared ownership of the object.
32
+ //!
33
+ virtual void APICALL Acquire() const __NOTHROW__ = 0;
34
+
35
+ //!
36
+ //! @brief Called by the clients of the object to indicate he has released his shared ownership of the object.
37
+ //! If this being the last client than this function should call Destroy to delete and release the memory.
38
+ //!
39
+ virtual void APICALL Release() const __NOTHROW__ = 0;
40
+
41
+ //! @{
42
+ //! \cond XMP_INTERNAL_DOCUMENTATION
43
+ //! Return the pointer to the internal Shared Object interface
44
+ //! \return either a const or non const pointer to internal ISharedObject_I interface.
45
+ virtual AdobeXMPCommon_Int::pISharedObject_I APICALL GetISharedObject_I() __NOTHROW__ = 0;
46
+
47
+ XMP_PRIVATE AdobeXMPCommon_Int::pcISharedObject_I GetISharedObject_I() const __NOTHROW__ {
48
+ return const_cast< ISharedObject * >( this )->GetISharedObject_I();
49
+ }
50
+ //! \endcond
51
+ //! @}
52
+
53
+ protected:
54
+
55
+ //!
56
+ //! protected virtual destructor.
57
+ //!
58
+ virtual ~ISharedObject() __NOTHROW__ = 0;
59
+
60
+ #ifdef FRIEND_CLASS_DECLARATION
61
+ FRIEND_CLASS_DECLARATION();
62
+ #endif
63
+
64
+ REQ_FRIEND_CLASS_DECLARATION();
65
+ };
66
+
67
+ inline ISharedObject::~ISharedObject() __NOTHROW__ { }
68
+
69
+ };
70
+
71
+ #endif // __ISharedObject_h__
@@ -0,0 +1,76 @@
1
+ //! @file IThreadSafe.h
2
+ #ifndef IThreadSafe_h__
3
+ #define IThreadSafe_h__ 1
4
+
5
+ //
6
+ // =================================================================================================
7
+ // Copyright Adobe
8
+ // Copyright 2015 Adobe
9
+ // All Rights Reserved
10
+ //
11
+ // NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms
12
+ // of the Adobe license agreement accompanying it.
13
+ // =================================================================================================
14
+ //
15
+
16
+ #include "XMPCommon/XMPCommonFwdDeclarations.h"
17
+
18
+ namespace AdobeXMPCommon {
19
+
20
+ //!
21
+ //! \brief Interface that serves as the base interface for all the externally exposed interfaces which needs to provide client configurable thread safety.
22
+ //!
23
+ //! \attention In case client has disabled thread safety at the module level these functions will
24
+ //! have no use.
25
+ //! \note By default all the objects created are not thread safe.
26
+ //!
27
+ class XMP_PUBLIC IThreadSafe
28
+ {
29
+ public:
30
+
31
+ //!
32
+ //! @brief Enables the thread safety on an object.
33
+ //! @details After calling this function the object can be used across multiple threads.
34
+ //!
35
+ virtual void APICALL EnableThreadSafety() const __NOTHROW__ = 0;
36
+
37
+ //!
38
+ //! @brief Disables the thread safety on an object.
39
+ //! @details After calling this function the object should not be used across multiple threads.
40
+ //!
41
+ virtual void APICALL DisableThreadSafety() const __NOTHROW__ = 0;
42
+
43
+ //!
44
+ //! @brief Informs whether object can be used across multiple threads or not.
45
+ //! \returns bool value; true in case object can be used across multiple threads, false
46
+ //! otherwise.
47
+ //!
48
+ virtual bool APICALL IsThreadSafe() const = 0;
49
+
50
+ //! @{
51
+ //! \cond XMP_INTERNAL_DOCUMENTATION
52
+ //! @brief Return the pointer to the internal Thread Safe interface
53
+ //! \return either a const or non const pointer to internal IThreadSafe_I interface.
54
+ virtual AdobeXMPCommon_Int::pIThreadSafe_I APICALL GetIThreadSafe_I() __NOTHROW__ = 0;
55
+
56
+ XMP_PRIVATE AdobeXMPCommon_Int::pcIThreadSafe_I GetIThreadSafe_I() const __NOTHROW__ {
57
+ return const_cast< IThreadSafe * >( this )->GetIThreadSafe_I();
58
+ }
59
+ virtual ~IThreadSafe(){}
60
+ //! \endcond
61
+ //! @}
62
+
63
+ protected:
64
+ //! \cond XMP_INTERNAL_DOCUMENTATION
65
+ //! @brief all safe functions
66
+ virtual uint32 APICALL isThreadSafe() const __NOTHROW__ = 0;
67
+ //! \endcond
68
+
69
+ #ifdef FRIEND_CLASS_DECLARATION
70
+ FRIEND_CLASS_DECLARATION();
71
+ #endif
72
+ REQ_FRIEND_CLASS_DECLARATION();
73
+ };
74
+
75
+ }
76
+ #endif // IThreadSafe_h__
@@ -0,0 +1,71 @@
1
+ #ifndef IVersionable_h__
2
+ #define IVersionable_h__ 1
3
+
4
+ // =================================================================================================
5
+ // Copyright Adobe
6
+ // Copyright 2015 Adobe
7
+ // All Rights Reserved
8
+ //
9
+ // NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms
10
+ // of the Adobe license agreement accompanying it.
11
+ // =================================================================================================
12
+
13
+ #include "XMPCommon/XMPCommonFwdDeclarations.h"
14
+
15
+ namespace AdobeXMPCommon {
16
+
17
+ //!
18
+ //! \brief Interface that serves as the base interface for all the externally exposed interfaces
19
+ //! which needs to provide evolving versions of the interface.
20
+ //! @details Provide pointer to interface requested by client.
21
+ //! Requirements on the class type
22
+ //! -# Need to implement a function GetInterfaceID() returning a unique id for the
23
+ //! interface. Only required to be implemented in first version of the interface.
24
+ //! -# Need to implement a function GetVersionNumber() returning the version of the
25
+ //! interface. Required to implemented by each version of the interface.
26
+ //!
27
+
28
+ class XMP_PUBLIC IVersionable {
29
+ public:
30
+
31
+ //!
32
+ //! @brief Get the raw pointer to an interface object implementing the requested version.
33
+ //! \return a raw pointer to an interface object implementing the requested version.
34
+ //! \attention In case a particular version number is not supported than an error is
35
+ //! thrown.
36
+ //!
37
+ template< typename requestedInterface >
38
+ XMP_PRIVATE requestedInterface * GetInterfacePointer() {
39
+ pvoid ptr = GetInterfacePointer( requestedInterface::GetInterfaceID(),
40
+ requestedInterface::GetInterfaceVersion() );
41
+ return static_cast< requestedInterface * >( ptr );
42
+ }
43
+
44
+ //!
45
+ //! @brief Get the raw pointer to a const interface object implementing the requested version.
46
+ //! \return a raw pointer to a const interface object implementing the requested version.
47
+ //! \attention In case a particular version number is not supported than an error is
48
+ //! thrown.
49
+ //!
50
+ template< typename requestedInterface >
51
+ XMP_PRIVATE const requestedInterface * GetInterfacePointer() const {
52
+ return const_cast< IVersionable * >( this )->GetInterfacePointer< requestedInterface >();
53
+ }
54
+
55
+ protected:
56
+ virtual ~IVersionable() {}
57
+ //! \cond XMP_INTERNAL_DOCUMENTATION
58
+ virtual pvoid APICALL GetInterfacePointer( uint64 interfaceID, uint32 interfaceVersion ) = 0;
59
+ // all safe functions
60
+ virtual pvoid APICALL getInterfacePointer( uint64 interfaceID, uint32 interfaceVersion, pcIError_base & error ) __NOTHROW__ = 0;
61
+ //! \endcond
62
+
63
+ #ifdef FRIEND_CLASS_DECLARATION
64
+ FRIEND_CLASS_DECLARATION();
65
+ #endif
66
+ REQ_FRIEND_CLASS_DECLARATION();
67
+ };
68
+
69
+ }
70
+
71
+ #endif // IVersionable_h__