summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHubert Figuiere <hub@figuiere.net>2007-05-11 18:38:11 -0400
committerHubert Figuiere <hub@figuiere.net>2007-05-11 18:38:11 -0400
commit9d7d7c3caac05db240692ad7e9196fcb7f5a1ce5 (patch)
treec6228d1abcad689137e764f63539effadaf1a662
Import of XMP SDK 4.1.1 as the start for openxmpadobe-4.1.1
-rw-r--r--build/XMP_BuildInfo.h36
-rw-r--r--build/gcc/XMPCore.mak213
-rw-r--r--build/gcc/i80386linux/expat_config.h95
-rw-r--r--build/gcc/sparcsolaris/expat_config.h95
-rw-r--r--build/vsnet/XMPCore.vcproj278
-rw-r--r--build/vsnet/XMPFiles.vcproj322
-rw-r--r--build/vsnet/XMPToolkit.sln25
-rw-r--r--build/vsnet/expat_config.h95
-rw-r--r--build/xcode/XMPToolkit-Common.xcconfig63
-rw-r--r--build/xcode/XMPToolkit-Debug.xcconfig12
-rw-r--r--build/xcode/XMPToolkit-Release.xcconfig12
-rw-r--r--build/xcode/XMPToolkit.xcodeproj/project.pbxproj790
-rw-r--r--build/xcode/expat_config.h107
-rw-r--r--docs/BSD-License.txt25
-rw-r--r--docs/XMP-SDK-Overview.pdfbin0 -> 56191 bytes
-rw-r--r--docs/XMP-Specification.pdfbin0 -> 931213 bytes
-rw-r--r--docs/XMPToolkit/TXMPFiles_8hpp-source.html162
-rw-r--r--docs/XMPToolkit/TXMPFiles_8hpp.html34
-rw-r--r--docs/XMPToolkit/TXMPFiles_8incl__cpp.html32
-rw-r--r--docs/XMPToolkit/TXMPFiles_8incl__cpp__incl.pngbin0 -> 1604 bytes
-rw-r--r--docs/XMPToolkit/TXMPIterator_8hpp-source.html104
-rw-r--r--docs/XMPToolkit/TXMPIterator_8hpp.html37
-rw-r--r--docs/XMPToolkit/TXMPIterator_8hpp__incl.pngbin0 -> 1125 bytes
-rw-r--r--docs/XMPToolkit/TXMPIterator_8incl__cpp.html33
-rw-r--r--docs/XMPToolkit/TXMPIterator_8incl__cpp__incl.pngbin0 -> 2105 bytes
-rw-r--r--docs/XMPToolkit/TXMPMeta_8hpp-source.html617
-rw-r--r--docs/XMPToolkit/TXMPMeta_8hpp.html33
-rw-r--r--docs/XMPToolkit/TXMPMeta_8incl__cpp.html33
-rw-r--r--docs/XMPToolkit/TXMPMeta_8incl__cpp__incl.pngbin0 -> 2068 bytes
-rw-r--r--docs/XMPToolkit/TXMPUtils_8hpp-source.html360
-rw-r--r--docs/XMPToolkit/TXMPUtils_8hpp.html33
-rw-r--r--docs/XMPToolkit/TXMPUtils_8incl__cpp.html33
-rw-r--r--docs/XMPToolkit/TXMPUtils_8incl__cpp__incl.pngbin0 -> 2101 bytes
-rw-r--r--docs/XMPToolkit/XMP_8incl__cpp.html35
-rw-r--r--docs/XMPToolkit/XMP_8incl__cpp__incl.pngbin0 -> 691 bytes
-rw-r--r--docs/XMPToolkit/XMP__Const_8h-source.html661
-rw-r--r--docs/XMPToolkit/XMP__Const_8h.html190
-rw-r--r--docs/XMPToolkit/XMP__Const_8h__incl.pngbin0 -> 1243 bytes
-rw-r--r--docs/XMPToolkit/annotated.html31
-rw-r--r--docs/XMPToolkit/classTXMPFiles-members.html40
-rw-r--r--docs/XMPToolkit/classTXMPFiles.html527
-rw-r--r--docs/XMPToolkit/classTXMPIterator-members.html32
-rw-r--r--docs/XMPToolkit/classTXMPIterator.html328
-rw-r--r--docs/XMPToolkit/classTXMPMeta-members.html93
-rw-r--r--docs/XMPToolkit/classTXMPMeta.html2781
-rw-r--r--docs/XMPToolkit/classTXMPUtils-members.html63
-rw-r--r--docs/XMPToolkit/classTXMPUtils.html1540
-rw-r--r--docs/XMPToolkit/doxygen.css358
-rw-r--r--docs/XMPToolkit/doxygen.pngbin0 -> 1281 bytes
-rw-r--r--docs/XMPToolkit/files.html31
-rw-r--r--docs/XMPToolkit/functions.html281
-rw-r--r--docs/XMPToolkit/functions_func.html281
-rw-r--r--docs/XMPToolkit/graph_legend.dot22
-rw-r--r--docs/XMPToolkit/graph_legend.html81
-rw-r--r--docs/XMPToolkit/graph_legend.pngbin0 -> 4256 bytes
-rw-r--r--docs/XMPToolkit/group__Transition.html259
-rw-r--r--docs/XMPToolkit/index.html112
-rw-r--r--docs/XMPToolkit/modules.html22
-rw-r--r--docs/XMPToolkit/structXMP__DateTime-members.html25
-rw-r--r--docs/XMPToolkit/structXMP__DateTime.html59
-rw-r--r--docs/XMPToolkit/tab_b.gifbin0 -> 35 bytes
-rw-r--r--docs/XMPToolkit/tab_l.gifbin0 -> 706 bytes
-rw-r--r--docs/XMPToolkit/tab_r.gifbin0 -> 2585 bytes
-rw-r--r--docs/XMPToolkit/tabs.css102
-rw-r--r--java/XMPCore/.classpath6
-rw-r--r--java/XMPCore/.project17
-rw-r--r--java/XMPCore/build.xml176
-rw-r--r--java/XMPCore/docs/allclasses-frame.html70
-rw-r--r--java/XMPCore/docs/allclasses-noframe.html70
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/XMPConst.html1227
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/XMPDateTime.html624
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/XMPDateTimeFactory.html381
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/XMPError.html423
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/XMPException.html300
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/XMPIterator.html304
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/XMPMeta.html2301
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/XMPMetaFactory.html571
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/XMPPathFactory.html427
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/XMPSchemaRegistry.html547
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/XMPUtils.html770
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/XMPVersionInfo.html316
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/class-use/XMPConst.html140
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/class-use/XMPDateTime.html311
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/class-use/XMPDateTimeFactory.html140
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/class-use/XMPError.html140
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/class-use/XMPException.html989
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/class-use/XMPIterator.html194
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/class-use/XMPMeta.html335
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/class-use/XMPMetaFactory.html140
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/class-use/XMPPathFactory.html140
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/class-use/XMPSchemaRegistry.html176
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/class-use/XMPUtils.html140
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/class-use/XMPVersionInfo.html176
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/options/AliasOptions.html591
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/options/IteratorOptions.html534
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/options/Options.html502
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/options/ParseOptions.html508
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/options/PropertyOptions.html1171
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/options/SerializeOptions.html1080
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/options/class-use/AliasOptions.html262
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/options/class-use/IteratorOptions.html239
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/options/class-use/Options.html210
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/options/class-use/ParseOptions.html249
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/options/class-use/PropertyOptions.html534
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/options/class-use/SerializeOptions.html321
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/options/package-frame.html42
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/options/package-summary.html200
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/options/package-tree.html151
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/options/package-use.html270
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/package-frame.html72
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/package-summary.html240
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/package-tree.html165
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/package-use.html221
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/properties/XMPAliasInfo.html276
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/properties/XMPProperty.html257
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/properties/XMPPropertyInfo.html297
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/properties/class-use/XMPAliasInfo.html193
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/properties/class-use/XMPProperty.html252
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/properties/class-use/XMPPropertyInfo.html140
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/properties/package-frame.html36
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/properties/package-summary.html179
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/properties/package-tree.html149
-rw-r--r--java/XMPCore/docs/com/adobe/xmp/properties/package-use.html191
-rw-r--r--java/XMPCore/docs/constant-values.html866
-rw-r--r--java/XMPCore/docs/deprecated-list.html157
-rw-r--r--java/XMPCore/docs/help-doc.html219
-rw-r--r--java/XMPCore/docs/index-files/index-1.html182
-rw-r--r--java/XMPCore/docs/index-files/index-10.html147
-rw-r--r--java/XMPCore/docs/index-files/index-11.html141
-rw-r--r--java/XMPCore/docs/index-files/index-12.html246
-rw-r--r--java/XMPCore/docs/index-files/index-13.html150
-rw-r--r--java/XMPCore/docs/index-files/index-14.html182
-rw-r--r--java/XMPCore/docs/index-files/index-15.html141
-rw-r--r--java/XMPCore/docs/index-files/index-16.html162
-rw-r--r--java/XMPCore/docs/index-files/index-17.html409
-rw-r--r--java/XMPCore/docs/index-files/index-18.html183
-rw-r--r--java/XMPCore/docs/index-files/index-19.html147
-rw-r--r--java/XMPCore/docs/index-files/index-2.html171
-rw-r--r--java/XMPCore/docs/index-files/index-20.html141
-rw-r--r--java/XMPCore/docs/index-files/index-21.html157
-rw-r--r--java/XMPCore/docs/index-files/index-3.html225
-rw-r--r--java/XMPCore/docs/index-files/index-4.html177
-rw-r--r--java/XMPCore/docs/index-files/index-5.html159
-rw-r--r--java/XMPCore/docs/index-files/index-6.html150
-rw-r--r--java/XMPCore/docs/index-files/index-7.html362
-rw-r--r--java/XMPCore/docs/index-files/index-8.html150
-rw-r--r--java/XMPCore/docs/index-files/index-9.html234
-rw-r--r--java/XMPCore/docs/index.html37
-rw-r--r--java/XMPCore/docs/overview-frame.html46
-rw-r--r--java/XMPCore/docs/overview-summary.html161
-rw-r--r--java/XMPCore/docs/overview-tree.html168
-rw-r--r--java/XMPCore/docs/package-list3
-rw-r--r--java/XMPCore/docs/resources/inherit.gifbin0 -> 57 bytes
-rw-r--r--java/XMPCore/docs/serialized-form.html177
-rw-r--r--java/XMPCore/docs/stylesheet.css29
-rw-r--r--java/XMPCore/src/com/adobe/xmp/XMPConst.java159
-rw-r--r--java/XMPCore/src/com/adobe/xmp/XMPDateTime.java98
-rw-r--r--java/XMPCore/src/com/adobe/xmp/XMPDateTimeFactory.java142
-rw-r--r--java/XMPCore/src/com/adobe/xmp/XMPError.java44
-rw-r--r--java/XMPCore/src/com/adobe/xmp/XMPException.java55
-rw-r--r--java/XMPCore/src/com/adobe/xmp/XMPIterator.java82
-rw-r--r--java/XMPCore/src/com/adobe/xmp/XMPMeta.java1152
-rw-r--r--java/XMPCore/src/com/adobe/xmp/XMPMetaFactory.java327
-rw-r--r--java/XMPCore/src/com/adobe/xmp/XMPPathFactory.java286
-rw-r--r--java/XMPCore/src/com/adobe/xmp/XMPSchemaRegistry.java235
-rw-r--r--java/XMPCore/src/com/adobe/xmp/XMPUtils.java506
-rw-r--r--java/XMPCore/src/com/adobe/xmp/XMPVersionInfo.java45
-rw-r--r--java/XMPCore/src/com/adobe/xmp/impl/Base64.java251
-rw-r--r--java/XMPCore/src/com/adobe/xmp/impl/ByteBuffer.java326
-rw-r--r--java/XMPCore/src/com/adobe/xmp/impl/CountOutputStream.java79
-rw-r--r--java/XMPCore/src/com/adobe/xmp/impl/FixASCIIControlsReader.java214
-rw-r--r--java/XMPCore/src/com/adobe/xmp/impl/ISO8601Converter.java503
-rw-r--r--java/XMPCore/src/com/adobe/xmp/impl/Latin1Converter.java197
-rw-r--r--java/XMPCore/src/com/adobe/xmp/impl/ParameterAsserts.java153
-rw-r--r--java/XMPCore/src/com/adobe/xmp/impl/ParseRDF.java1349
-rw-r--r--java/XMPCore/src/com/adobe/xmp/impl/QName.java80
-rw-r--r--java/XMPCore/src/com/adobe/xmp/impl/Utils.java511
-rw-r--r--java/XMPCore/src/com/adobe/xmp/impl/XMPDateTimeImpl.java303
-rw-r--r--java/XMPCore/src/com/adobe/xmp/impl/XMPIteratorImpl.java598
-rw-r--r--java/XMPCore/src/com/adobe/xmp/impl/XMPMetaImpl.java1389
-rw-r--r--java/XMPCore/src/com/adobe/xmp/impl/XMPMetaParser.java361
-rw-r--r--java/XMPCore/src/com/adobe/xmp/impl/XMPNode.java921
-rw-r--r--java/XMPCore/src/com/adobe/xmp/impl/XMPNodeUtils.java930
-rw-r--r--java/XMPCore/src/com/adobe/xmp/impl/XMPNormalizer.java696
-rw-r--r--java/XMPCore/src/com/adobe/xmp/impl/XMPSchemaRegistryImpl.java467
-rw-r--r--java/XMPCore/src/com/adobe/xmp/impl/XMPSerializerHelper.java102
-rw-r--r--java/XMPCore/src/com/adobe/xmp/impl/XMPSerializerRDF.java1295
-rw-r--r--java/XMPCore/src/com/adobe/xmp/impl/XMPUtilsImpl.java1167
-rw-r--r--java/XMPCore/src/com/adobe/xmp/impl/package.html11
-rw-r--r--java/XMPCore/src/com/adobe/xmp/impl/xpath/XMPPath.java106
-rw-r--r--java/XMPCore/src/com/adobe/xmp/impl/xpath/XMPPathParser.java529
-rw-r--r--java/XMPCore/src/com/adobe/xmp/impl/xpath/XMPPathSegment.java147
-rw-r--r--java/XMPCore/src/com/adobe/xmp/impl/xpath/package.html12
-rw-r--r--java/XMPCore/src/com/adobe/xmp/options/AliasOptions.java186
-rw-r--r--java/XMPCore/src/com/adobe/xmp/options/IteratorOptions.java148
-rw-r--r--java/XMPCore/src/com/adobe/xmp/options/Options.java290
-rw-r--r--java/XMPCore/src/com/adobe/xmp/options/ParseOptions.java150
-rw-r--r--java/XMPCore/src/com/adobe/xmp/options/PropertyOptions.java453
-rw-r--r--java/XMPCore/src/com/adobe/xmp/options/SerializeOptions.java461
-rw-r--r--java/XMPCore/src/com/adobe/xmp/options/package.html20
-rw-r--r--java/XMPCore/src/com/adobe/xmp/package.html11
-rw-r--r--java/XMPCore/src/com/adobe/xmp/properties/XMPAliasInfo.java39
-rw-r--r--java/XMPCore/src/com/adobe/xmp/properties/XMPProperty.java40
-rw-r--r--java/XMPCore/src/com/adobe/xmp/properties/XMPPropertyInfo.java45
-rw-r--r--java/XMPCore/src/com/adobe/xmp/properties/package.html13
-rw-r--r--java/XMPCore/src/com/adobe/xmp/version.properties15
-rw-r--r--java/XMPCoreCoverage/.classpath7
-rw-r--r--java/XMPCoreCoverage/.project17
-rw-r--r--java/XMPCoreCoverage/src/samples/XMPCoreCoverage.java1073
-rw-r--r--java/XMPCoreCoverage/src/samples/XMPCoreCoverageConst.java280
-rw-r--r--java/readme.txt39
-rw-r--r--public/include/TXMPFiles.hpp418
-rw-r--r--public/include/TXMPIterator.hpp205
-rw-r--r--public/include/TXMPMeta.hpp1599
-rw-r--r--public/include/TXMPUtils.hpp845
-rw-r--r--public/include/XMP.hpp98
-rw-r--r--public/include/XMP.incl_cpp69
-rw-r--r--public/include/XMP_Const.h913
-rw-r--r--public/include/XMP_Environment.h121
-rw-r--r--public/include/XMP_Version.h45
-rw-r--r--public/include/client-glue/TXMPFiles.incl_cpp347
-rw-r--r--public/include/client-glue/TXMPIterator.incl_cpp226
-rw-r--r--public/include/client-glue/TXMPMeta.incl_cpp927
-rw-r--r--public/include/client-glue/TXMPUtils.incl_cpp491
-rw-r--r--public/include/client-glue/WXMPFiles.hpp155
-rw-r--r--public/include/client-glue/WXMPIterator.hpp83
-rw-r--r--public/include/client-glue/WXMPMeta.hpp610
-rw-r--r--public/include/client-glue/WXMPUtils.hpp322
-rw-r--r--public/include/client-glue/WXMP_Common.hpp110
-rw-r--r--samples/BlueSquares/BlueSquare.aibin0 -> 1186535 bytes
-rw-r--r--samples/BlueSquares/BlueSquare.avibin0 -> 132262 bytes
-rw-r--r--samples/BlueSquares/BlueSquare.eps87
-rw-r--r--samples/BlueSquares/BlueSquare.inddbin0 -> 757760 bytes
-rw-r--r--samples/BlueSquares/BlueSquare.jpgbin0 -> 24205 bytes
-rw-r--r--samples/BlueSquares/BlueSquare.movbin0 -> 47641 bytes
-rw-r--r--samples/BlueSquares/BlueSquare.mp3bin0 -> 130244 bytes
-rw-r--r--samples/BlueSquares/BlueSquare.pdfbin0 -> 10806 bytes
-rwxr-xr-xsamples/BlueSquares/BlueSquare.pngbin0 -> 5998 bytes
-rw-r--r--samples/BlueSquares/BlueSquare.psdbin0 -> 36014 bytes
-rw-r--r--samples/BlueSquares/BlueSquare.tifbin0 -> 259384 bytes
-rw-r--r--samples/BlueSquares/BlueSquare.wavbin0 -> 683118 bytes
-rw-r--r--samples/build/gcc/XMPSamples.mak178
-rw-r--r--samples/build/vsnet/DumpMainXMP.vcproj309
-rw-r--r--samples/build/vsnet/DumpScannedXMP.vcproj230
-rw-r--r--samples/build/vsnet/XMPCoreCoverage.vcproj226
-rw-r--r--samples/build/vsnet/XMPFilesCoverage.vcproj319
-rw-r--r--samples/build/vsnet/XMPSamples.sln37
-rw-r--r--samples/build/xcode/XMPSamples-Common.xcconfig39
-rw-r--r--samples/build/xcode/XMPSamples-Debug.xcconfig15
-rw-r--r--samples/build/xcode/XMPSamples-Release.xcconfig15
-rw-r--r--samples/build/xcode/XMPSamples.xcodeproj/project.pbxproj705
-rw-r--r--samples/source/DumpMainXMP.cpp158
-rw-r--r--samples/source/DumpScannedXMP.cpp188
-rw-r--r--samples/source/XMPCoreCoverage.cpp1955
-rw-r--r--samples/source/XMPFilesCoverage.cpp322
-rw-r--r--samples/source/XMPScanner.cpp1470
-rw-r--r--samples/source/XMPScanner.hpp332
-rw-r--r--source/XMPCore/ExpatAdapter.cpp465
-rw-r--r--source/XMPCore/ExpatAdapter.hpp38
-rw-r--r--source/XMPCore/ParseRDF.cpp1344
-rw-r--r--source/XMPCore/WXMPIterator.cpp186
-rw-r--r--source/XMPCore/WXMPMeta.cpp1285
-rw-r--r--source/XMPCore/WXMPUtils.cpp624
-rw-r--r--source/XMPCore/XMLParserAdapter.hpp53
-rw-r--r--source/XMPCore/XMPCore_Impl.cpp1507
-rw-r--r--source/XMPCore/XMPCore_Impl.hpp631
-rw-r--r--source/XMPCore/XMPIterator.cpp735
-rw-r--r--source/XMPCore/XMPIterator.hpp148
-rw-r--r--source/XMPCore/XMPMeta-GetSet.cpp1209
-rw-r--r--source/XMPCore/XMPMeta-Parse.cpp1290
-rw-r--r--source/XMPCore/XMPMeta-Serialize.cpp1352
-rw-r--r--source/XMPCore/XMPMeta.cpp1471
-rw-r--r--source/XMPCore/XMPMeta.hpp414
-rw-r--r--source/XMPCore/XMPUtils-FileInfo.cpp1257
-rw-r--r--source/XMPCore/XMPUtils.cpp2123
-rw-r--r--source/XMPCore/XMPUtils.hpp220
-rw-r--r--source/XMPFiles/FileHandlers/AVI_Handler.cpp432
-rw-r--r--source/XMPFiles/FileHandlers/AVI_Handler.hpp53
-rw-r--r--source/XMPFiles/FileHandlers/Basic_Handler.cpp247
-rw-r--r--source/XMPFiles/FileHandlers/Basic_Handler.hpp103
-rw-r--r--source/XMPFiles/FileHandlers/InDesign_Handler.cpp423
-rw-r--r--source/XMPFiles/FileHandlers/InDesign_Handler.hpp60
-rw-r--r--source/XMPFiles/FileHandlers/JPEG_Handler.cpp997
-rw-r--r--source/XMPFiles/FileHandlers/JPEG_Handler.hpp95
-rw-r--r--source/XMPFiles/FileHandlers/MOV_Handler.cpp312
-rw-r--r--source/XMPFiles/FileHandlers/MOV_Handler.hpp76
-rw-r--r--source/XMPFiles/FileHandlers/MP3_Handler.cpp339
-rw-r--r--source/XMPFiles/FileHandlers/MP3_Handler.hpp56
-rw-r--r--source/XMPFiles/FileHandlers/MPEG_Handler.cpp234
-rw-r--r--source/XMPFiles/FileHandlers/MPEG_Handler.hpp57
-rw-r--r--source/XMPFiles/FileHandlers/PNG_Handler.cpp281
-rw-r--r--source/XMPFiles/FileHandlers/PNG_Handler.hpp60
-rw-r--r--source/XMPFiles/FileHandlers/PSD_Handler.cpp457
-rw-r--r--source/XMPFiles/FileHandlers/PSD_Handler.hpp74
-rw-r--r--source/XMPFiles/FileHandlers/PostScript_Handler.cpp578
-rw-r--r--source/XMPFiles/FileHandlers/PostScript_Handler.hpp63
-rw-r--r--source/XMPFiles/FileHandlers/Scanner_Handler.cpp338
-rw-r--r--source/XMPFiles/FileHandlers/Scanner_Handler.hpp42
-rw-r--r--source/XMPFiles/FileHandlers/TIFF_Handler.cpp379
-rw-r--r--source/XMPFiles/FileHandlers/TIFF_Handler.hpp70
-rw-r--r--source/XMPFiles/FileHandlers/Trivial_Handler.cpp66
-rw-r--r--source/XMPFiles/FileHandlers/Trivial_Handler.hpp47
-rw-r--r--source/XMPFiles/FileHandlers/WAV_Handler.cpp648
-rw-r--r--source/XMPFiles/FileHandlers/WAV_Handler.hpp71
-rw-r--r--source/XMPFiles/FormatSupport/EndianUtils.hpp422
-rw-r--r--source/XMPFiles/FormatSupport/ID3_Support.cpp1137
-rw-r--r--source/XMPFiles/FormatSupport/ID3_Support.hpp39
-rw-r--r--source/XMPFiles/FormatSupport/IPTC_Support.cpp703
-rw-r--r--source/XMPFiles/FormatSupport/IPTC_Support.hpp302
-rw-r--r--source/XMPFiles/FormatSupport/PNG_Support.cpp335
-rw-r--r--source/XMPFiles/FormatSupport/PNG_Support.hpp74
-rw-r--r--source/XMPFiles/FormatSupport/PSIR_FileWriter.cpp572
-rw-r--r--source/XMPFiles/FormatSupport/PSIR_MemoryReader.cpp95
-rw-r--r--source/XMPFiles/FormatSupport/PSIR_Support.hpp289
-rw-r--r--source/XMPFiles/FormatSupport/QuickTime_Support.cpp79
-rw-r--r--source/XMPFiles/FormatSupport/QuickTime_Support.hpp27
-rw-r--r--source/XMPFiles/FormatSupport/RIFF_Support.cpp491
-rw-r--r--source/XMPFiles/FormatSupport/RIFF_Support.hpp172
-rw-r--r--source/XMPFiles/FormatSupport/ReconcileIPTC.cpp829
-rw-r--r--source/XMPFiles/FormatSupport/ReconcileLegacy.cpp191
-rw-r--r--source/XMPFiles/FormatSupport/ReconcileLegacy.hpp298
-rw-r--r--source/XMPFiles/FormatSupport/ReconcileTIFF.cpp2416
-rw-r--r--source/XMPFiles/FormatSupport/Reconcile_Impl.cpp395
-rw-r--r--source/XMPFiles/FormatSupport/Reconcile_Impl.hpp63
-rw-r--r--source/XMPFiles/FormatSupport/TIFF_FileWriter.cpp1966
-rw-r--r--source/XMPFiles/FormatSupport/TIFF_MemoryReader.cpp610
-rw-r--r--source/XMPFiles/FormatSupport/TIFF_Support.cpp626
-rw-r--r--source/XMPFiles/FormatSupport/TIFF_Support.hpp887
-rw-r--r--source/XMPFiles/FormatSupport/XMPScanner.cpp1478
-rw-r--r--source/XMPFiles/FormatSupport/XMPScanner.hpp330
-rw-r--r--source/XMPFiles/WXMPFiles.cpp320
-rw-r--r--source/XMPFiles/XMPFiles.cpp1005
-rw-r--r--source/XMPFiles/XMPFiles.hpp224
-rw-r--r--source/XMPFiles/XMPFiles_Impl.cpp1210
-rw-r--r--source/XMPFiles/XMPFiles_Impl.hpp517
-rw-r--r--source/common/UnicodeConversions.cpp1665
-rw-r--r--source/common/UnicodeConversions.hpp121
-rw-r--r--source/common/UnicodeInlines.incl_cpp129
-rw-r--r--third-party/MD5/MD5.cpp325
-rw-r--r--third-party/MD5/MD5.h46
-rw-r--r--third-party/QTDevWin/ReadMe.txt12
-rw-r--r--third-party/expat/ReadMe.txt38
342 files changed, 115327 insertions, 0 deletions
diff --git a/build/XMP_BuildInfo.h b/build/XMP_BuildInfo.h
new file mode 100644
index 0000000..6261f3c
--- /dev/null
+++ b/build/XMP_BuildInfo.h
@@ -0,0 +1,36 @@
+#ifndef __XMP_BuildInfo_h__
+#define __XMP_BuildInfo_h__ 1
+
+/* --------------------------------------------------------------------------------------------- */
+/* ** IMPORTANT ** This file must be usable by strict ANSI C compilers. No "//" comments, etc. */
+/* --------------------------------------------------------------------------------------------- */
+
+/*
+// =================================================================================================
+// Copyright 2002-2007 Adobe Systems Incorporated
+// All Rights Reserved.
+//
+// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms
+// of the Adobe license agreement accompanying it.
+// =================================================================================================
+*/
+
+
+/*
+// =================================================================================================
+// This file provides build numbers that are set automatically by the external build system. This is
+// in contrast to the manual version numbers of XMP_ChangeLog.h.
+//
+// The value of kXMP_BuildDate is set to the date of the build, in some reasonable format. It would
+// be nice if the month used a name instead of a number and if the year has 4 digits. But it isn't
+// worth going to great lengths for this, a numeric date is OK.
+
+// The value of kXMP_BuildNumber is set to some number that is meaningful to the build system, such
+// as a Perforce changelist number.
+// =================================================================================================
+*/
+
+#define kXMP_Copyright Copyright (c) 2002-2007, Adobe Systems Incorporated
+#define kXMP_CopyrightStr "Copyright (c) 2002-2007, Adobe Systems Incorporated"
+
+#endif /* __XMP_BuildInfo_h__ */
diff --git a/build/gcc/XMPCore.mak b/build/gcc/XMPCore.mak
new file mode 100644
index 0000000..cd37bae
--- /dev/null
+++ b/build/gcc/XMPCore.mak
@@ -0,0 +1,213 @@
+# ==================================================================================================
+# Copyright 2002-2004 Adobe Systems Incorporated
+# All Rights Reserved.
+#
+# NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms
+# of the Adobe license agreement accompanying it.
+# ==================================================================================================
+
+# ==================================================================================================
+
+# Define internal use variables.
+
+Error =
+TargetOS = ${OS}
+
+ifeq "${TargetOS}" ""
+ TargetOS = ${os}
+endif
+
+ifeq "${TargetOS}" ""
+ TargetOS = ${MACHTYPE}${OSTYPE}
+endif
+
+ifeq "${TargetOS}" "i386linux" # Linux ${MACHTYPE}${OSTYPE} is i386linux.
+ TargetOS = i80386linux
+endif
+
+ifeq "${TargetOS}" "linux"
+ TargetOS = i80386linux
+endif
+
+ifeq "${TargetOS}" "solaris"
+ TargetOS = sparcsolaris
+endif
+
+ifneq "${TargetOS}" "i80386linux"
+ ifneq "${TargetOS}" "sparcsolaris"
+ Error += Invalid target OS "${TargetOS}"
+ endif
+endif
+
+TargetStage = ${STAGE}
+
+ifeq "${TargetStage}" ""
+ TargetStage = ${stage}
+endif
+
+ifeq "${TargetStage}" ""
+ TargetStage = debug
+endif
+
+ifneq "${TargetStage}" "debug"
+ ifneq "${TargetStage}" "release"
+ Error += Invalid target stage "${TargetStage}"
+ endif
+endif
+
+ifeq "${TargetStage}" "debug"
+ LibSuffix = StaticDebug
+endif
+
+ifeq "${TargetStage}" "release"
+ LibSuffix = StaticRelease
+endif
+
+BuildRoot = ../..
+TargetRoot = ${BuildRoot}/public/libraries/${TargetOS}/${TargetStage}
+TempRoot = ${BuildRoot}/intermediate/${TargetOS}/${TargetStage}
+
+HeaderRoot = ${BuildRoot}/public/include
+SourceRoot = ${BuildRoot}/source
+ExpatRoot = ${BuildRoot}/third-party/expat
+MD5Root = ${BuildRoot}/third-party/MD5
+
+LibName = ${TargetRoot}/libXMPCore${LibSuffix}.a
+
+# ==================================================================================================
+
+CC = gcc
+CPP = gcc -x c++
+AR = ar -rs
+
+CPPFLAGS = -Wno-multichar -Wno-implicit -Wno-ctor-dtor-privacy -funsigned-char -fexceptions
+CPPFLAGS += -DUNIX_ENV=1 -DXMP_IMPL=1 -DXMP_ClientBuild=0 -D_FILE_OFFSET_BITS=64 -DHAVE_EXPAT_CONFIG_H=1 -DXML_STATIC=1
+
+ifeq "${TargetOS}" "i80386linux"
+ CPPFLAGS += -mtune=i686
+endif
+
+ifeq "${TargetOS}" "sparcsolaris"
+ CPPFLAGS += -mtune=ultrasparc
+endif
+
+ifeq "$(TargetStage)" "debug"
+ CPPFLAGS += -DDEBUG=1 -D_DEBUG=1 -g -O0
+endif
+
+ifeq "$(TargetStage)" "release"
+ CPPFLAGS += -DNDEBUG=1 -O2 -Os
+endif
+
+# ==================================================================================================
+
+CPPObjs = $(foreach objs,${CPPSources:.cpp=.o},${TempRoot}/$(objs))
+CCObjs = $(foreach objs,${CCSources:.c=.o},${TempRoot}/$(objs))
+
+vpath %.incl_cpp \
+ ${HeaderRoot}: \
+ ${HeaderRoot}/client-glue:
+
+vpath %.cpp \
+ ${SourceRoot}/XMPCore: \
+ ${SourceRoot}/common: \
+ ${HeaderRoot}: \
+ ${HeaderRoot}/client-glue: \
+ ${ExpatRoot}/lib: \
+ ${MD5Root}:
+
+vpath %.c \
+ ${SourceRoot}/XMPCore: \
+ ${HeaderRoot}: \
+ ${HeaderRoot}/client-glue: \
+ ${ExpatRoot}/lib:
+
+CPPSources = \
+ XMPMeta.cpp \
+ XMPMeta-GetSet.cpp \
+ XMPMeta-Parse.cpp \
+ XMPMeta-Serialize.cpp \
+ XMPIterator.cpp \
+ XMPUtils.cpp \
+ XMPUtils-FileInfo.cpp \
+ XMPCore_Impl.cpp \
+ ExpatAdapter.cpp \
+ ParseRDF.cpp \
+ UnicodeConversions.cpp \
+ MD5.cpp \
+ WXMPMeta.cpp \
+ WXMPIterator.cpp \
+ WXMPUtils.cpp
+
+CCSources = \
+ xmlparse.c \
+ xmlrole.c \
+ xmltok.c
+
+Includes = \
+ -I${HeaderRoot} \
+ -I${SourceRoot}/XMPCore \
+ -I${SourceRoot}/common \
+ -I${BuildRoot}/build \
+ -I${BuildRoot}/build/gcc/${TargetOS} \
+ -I${ExpatRoot}/lib \
+ -I${MD5Root}
+
+.SUFFIXES: # Delete the default suffixes
+.SUFFIXES: .o .c .cpp # Define our suffix list
+
+# ==================================================================================================
+
+${TempRoot}/%.o : %.c
+ @echo ""
+ @echo "Compiling $<"
+ ${CC} ${CPPFLAGS} ${Includes} -c $< -o $@
+
+${TempRoot}/%.o : %.cpp
+ @echo ""
+ @echo "Compiling $<"
+ ${CPP} ${CPPFLAGS} ${Includes} -c $< -o $@
+
+# ==================================================================================================
+
+.PHONY: all msg create_dirs
+
+all : msg create_dirs ${LibName}
+
+msg :
+ifeq "${Error}" ""
+ @echo ""
+ @echo Building XMP toolkit for ${TargetOS} ${TargetStage}
+else
+ @echo ""
+ @echo "Error: ${Error}"
+ @echo ""
+ @echo "# To build the XMP Toolkit :"
+ @echo "# make -f XMPCore.mak [OS=<os>] [STAGE=<stage>]"
+ @echo "# where"
+ @echo "# OS = i80386linux | sparcsolaris"
+ @echo "# STAGE = debug | release"
+ @echo "#"
+ @echo "# The OS and STAGE symbols can also be lowercase, os and stage."
+ @echo "# This makefile is only for Linux and Solaris, AIX and HPUX do"
+ @echo "# not use gcc, their makefiles are in other build folders. If"
+ @echo "# the OS is omitted it will try to default from the OSTYPE and"
+ @echo "# MACHTYPE environment variables. If the stage is omitted it"
+ @echo "# defaults to debug."
+ @echo ""
+ exit 1
+endif
+
+create_dirs :
+ mkdir -p ${TempRoot}
+ mkdir -p ${TargetRoot}
+
+${LibName} : ${CCObjs} ${CPPObjs}
+ @echo ""
+ @echo "Linking $@"
+ rm -f $@
+ ${AR} $@ $?
+ @echo ""
+
+clean : msg
+ rm -f ${TempRoot}/* ${TargetRoot}/*
diff --git a/build/gcc/i80386linux/expat_config.h b/build/gcc/i80386linux/expat_config.h
new file mode 100644
index 0000000..18fe7bc
--- /dev/null
+++ b/build/gcc/i80386linux/expat_config.h
@@ -0,0 +1,95 @@
+/* expat_config.h. Generated by configure. */
+/* expat_config.h.in. Generated from configure.in by autoheader. */
+
+/* *** Tweaked by hand for 32 bit x86 Linux builds */
+
+/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */
+#define BYTEORDER 1234
+
+/* Define to 1 if you have the `bcopy' function. */
+#define HAVE_BCOPY 1
+
+/* Define to 1 if you have the <check.h> header file. */
+/* #undef HAVE_CHECK_H */
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define to 1 if you have the `getpagesize' function. */
+#define HAVE_GETPAGESIZE 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the `memmove' function. */
+#define HAVE_MEMMOVE 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have a working `mmap' system call. */
+#define HAVE_MMAP 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "expat-bugs@mail.libexpat.org"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "expat"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "expat 1.95.8"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "expat"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "1.95.8"
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* whether byteorder is bigendian */
+/* #undef WORDS_BIGENDIAN */
+
+/* Define to specify how much context to retain around the current parse
+ point. */
+#define XML_CONTEXT_BYTES 1024
+
+/* Define to make parameter entity parsing functionality available. */
+/* #define XML_DTD 1 */
+
+/* Define to make XML Namespaces functionality available. */
+#define XML_NS 1
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
+
+/* Define to `long' if <sys/types.h> does not define. */
+/* #undef off_t */
+
+/* Define to `unsigned' if <sys/types.h> does not define. */
+/* #undef size_t */
diff --git a/build/gcc/sparcsolaris/expat_config.h b/build/gcc/sparcsolaris/expat_config.h
new file mode 100644
index 0000000..48bdd2e
--- /dev/null
+++ b/build/gcc/sparcsolaris/expat_config.h
@@ -0,0 +1,95 @@
+/* expat_config.h. Generated by configure. */
+/* expat_config.h.in. Generated from configure.in by autoheader. */
+
+/* *** Tweaked by hand for 32 bit Sparc Solaris builds */
+
+/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */
+#define BYTEORDER 4321
+
+/* Define to 1 if you have the `bcopy' function. */
+#define HAVE_BCOPY 1
+
+/* Define to 1 if you have the <check.h> header file. */
+/* #undef HAVE_CHECK_H */
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define to 1 if you have the `getpagesize' function. */
+#define HAVE_GETPAGESIZE 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the `memmove' function. */
+#define HAVE_MEMMOVE 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have a working `mmap' system call. */
+#define HAVE_MMAP 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+/* #undef HAVE_STDINT_H */
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "expat-bugs@mail.libexpat.org"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "expat"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "expat 1.95.8"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "expat"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "1.95.8"
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* whether byteorder is bigendian */
+#define WORDS_BIGENDIAN 1
+
+/* Define to specify how much context to retain around the current parse
+ point. */
+#define XML_CONTEXT_BYTES 1024
+
+/* Define to make parameter entity parsing functionality available. */
+/* #define XML_DTD 1 */
+
+/* Define to make XML Namespaces functionality available. */
+#define XML_NS 1
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
+
+/* Define to `long' if <sys/types.h> does not define. */
+/* #undef off_t */
+
+/* Define to `unsigned' if <sys/types.h> does not define. */
+/* #undef size_t */
diff --git a/build/vsnet/XMPCore.vcproj b/build/vsnet/XMPCore.vcproj
new file mode 100644
index 0000000..6b76f57
--- /dev/null
+++ b/build/vsnet/XMPCore.vcproj
@@ -0,0 +1,278 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="XMPCore"
+ ProjectGUID="{C5BB1536-3776-4474-861D-B5923C610FE4}"
+ RootNamespace="XMPCore"
+ Keyword="Win32Proj"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="../../public/libraries/windows/debug/"
+ IntermediateDirectory="../../intermediate/windows/debug/"
+ ConfigurationType="4"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ InlineFunctionExpansion="0"
+ FavorSizeOrSpeed="0"
+ WholeProgramOptimization="false"
+ AdditionalIncludeDirectories="./;../;../../public/include/;../../source/common/;../../source/XMPCore/;&quot;../../third-party/expat/lib/&quot;;&quot;../../third-party/MD5/&quot;"
+ PreprocessorDefinitions="WIN32=1;_WINDOWS=1;WIN_ENV=1;XMP_ClientBuild=0;HAVE_EXPAT_CONFIG_H=1;XML_STATIC=1;DEBUG=1;_DEBUG=1"
+ StringPooling="true"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ SmallerTypeCheck="false"
+ RuntimeLibrary="1"
+ DefaultCharIsUnsigned="true"
+ ForceConformanceInForLoopScope="true"
+ UsePrecompiledHeader="0"
+ ObjectFile="..\..\intermediate\windows\debug\"
+ ProgramDataBaseFileName="..\..\intermediate\windows\debug\vc80.pdb"
+ BrowseInformation="0"
+ WarningLevel="3"
+ WarnAsError="false"
+ Detect64BitPortabilityProblems="false"
+ DebugInformationFormat="3"
+ CompileAs="2"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/XMPCoreStaticDebug.lib"
+ IgnoreAllDefaultLibraries="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="../../public/libraries/windows/release/"
+ IntermediateDirectory="../../intermediate/windows/release/"
+ ConfigurationType="4"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="1"
+ InlineFunctionExpansion="2"
+ FavorSizeOrSpeed="2"
+ WholeProgramOptimization="true"
+ AdditionalIncludeDirectories="./;../;../../public/include/;../../source/common/;../../source/XMPCore/;&quot;../../third-party/expat/lib/&quot;;&quot;../../third-party/MD5/&quot;"
+ PreprocessorDefinitions="WIN32=1;_WINDOWS=1;WIN_ENV=1;XMP_ClientBuild=0;HAVE_EXPAT_CONFIG_H=1;XML_STATIC=1;NDEBUG=1;"
+ StringPooling="true"
+ MinimalRebuild="false"
+ BasicRuntimeChecks="0"
+ SmallerTypeCheck="false"
+ RuntimeLibrary="0"
+ BufferSecurityCheck="false"
+ DefaultCharIsUnsigned="true"
+ ForceConformanceInForLoopScope="true"
+ UsePrecompiledHeader="0"
+ ObjectFile="..\..\intermediate\windows\release\"
+ ProgramDataBaseFileName="..\..\intermediate\windows\release\vc80pdb"
+ BrowseInformation="0"
+ WarningLevel="3"
+ WarnAsError="false"
+ Detect64BitPortabilityProblems="false"
+ DebugInformationFormat="0"
+ CompileAs="2"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ OutputFile="$(OutDir)/XMPCoreStaticRelease.lib"
+ IgnoreAllDefaultLibraries="true"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath=".\XMPCore.def"
+ >
+ </File>
+ <Filter
+ Name="Toolkit Core"
+ >
+ <File
+ RelativePath="..\..\source\XMPCore\XMPCore_Impl.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPCore\XMPIterator.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPCore\XMPMeta-GetSet.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPCore\XMPMeta-Parse.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPCore\XMPMeta-Serialize.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPCore\XMPMeta.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPCore\XMPUtils-FileInfo.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPCore\XMPUtils.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Utilities"
+ >
+ <File
+ RelativePath="..\..\source\XMPCore\ExpatAdapter.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\third-party\MD5\MD5.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPCore\ParseRDF.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\common\UnicodeConversions.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="XML Parser"
+ >
+ <File
+ RelativePath="..\..\third-party\expat\lib\xmlparse.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\third-party\expat\lib\xmlrole.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\third-party\expat\lib\xmltok.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="ABI Wrappers"
+ >
+ <File
+ RelativePath="..\..\source\XMPCore\WXMPIterator.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPCore\WXMPMeta.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPCore\WXMPUtils.cpp"
+ >
+ </File>
+ </Filter>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/build/vsnet/XMPFiles.vcproj b/build/vsnet/XMPFiles.vcproj
new file mode 100644
index 0000000..4c72e2a
--- /dev/null
+++ b/build/vsnet/XMPFiles.vcproj
@@ -0,0 +1,322 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="XMPFiles"
+ ProjectGUID="{B9A2E1F1-4E5C-49AC-B052-604CAE21F56E}"
+ RootNamespace="XMPFilesStatic"
+ Keyword="Win32Proj"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="..\..\public\libraries\windows\debug"
+ IntermediateDirectory="..\..\intermediate\windows\debug"
+ ConfigurationType="4"
+ CharacterSet="1"
+ WholeProgramOptimization="0"
+ BuildLogFile="$(IntDir)\BuildLog.htm"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ UseUnicodeResponseFiles="true"
+ Optimization="0"
+ AdditionalIncludeDirectories=".\;..\;..\..\public\include\;..\..\source\XMPFiles\;..\..\source\XMPFiles\FormatSupport\;..\..\source\common\;&quot;..\..\third-party\MD5\&quot;;&quot;..\..\third-party\QTDevWin\CIncludes&quot;"
+ PreprocessorDefinitions="WIN32=1;_WINDOWS=1;WIN_ENV=1;XMP_StaticBuild=1;XMP_PRESERVE_BIB_CLIENT=0;DEBUG=1;_DEBUG=1"
+ StringPooling="true"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ DefaultCharIsUnsigned="true"
+ UsePrecompiledHeader="0"
+ ObjectFile="../../intermediate/windows/debug/"
+ ProgramDataBaseFileName="../../intermediate/windows/debug/vc80.pdb"
+ XMLDocumentationFileName="$(IntDir)\"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="false"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ AdditionalDependencies="..\..\third-party\QTDevWin\Libraries\qtmlClient.lib Advapi32.lib User32.lib $(NOINHERIT)"
+ OutputFile="$(OutDir)/XMPFilesStaticDebug.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine=""
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="..\..\public\libraries\windows\release"
+ IntermediateDirectory="..\..\intermediate\windows\release"
+ ConfigurationType="4"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ BuildLogFile="$(IntDir)\BuildLog.htm"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="1"
+ InlineFunctionExpansion="2"
+ FavorSizeOrSpeed="2"
+ WholeProgramOptimization="true"
+ AdditionalIncludeDirectories="./;../;../../public/include/;../../source/XMPFiles/;../../source/XMPFiles/FormatSupport/;../../source/common/;&quot;../../third-party/MD5/&quot;;&quot;../../third-party/QTDevWin/CIncludes&quot;"
+ PreprocessorDefinitions="WIN32=1;_WINDOWS=1;WIN_ENV=1;XMP_StaticBuild=1;XMP_PRESERVE_BIB_CLIENT=0;NDEBUG=1"
+ StringPooling="true"
+ MinimalRebuild="false"
+ BasicRuntimeChecks="0"
+ RuntimeLibrary="0"
+ BufferSecurityCheck="false"
+ DefaultCharIsUnsigned="true"
+ UsePrecompiledHeader="0"
+ ObjectFile="$(IntDir)\"
+ ProgramDataBaseFileName="$(IntDir)\vc80.pdb"
+ XMLDocumentationFileName="$(IntDir)\"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="false"
+ DebugInformationFormat="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ AdditionalDependencies="..\..\third-party\QTDevWin\Libraries\qtmlClient.lib Advapi32.lib User32.lib $(NOINHERIT)"
+ OutputFile="$(OutDir)/XMPFilesStaticRelease.lib"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ CommandLine=""
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <Filter
+ Name="Common Code"
+ >
+ <File
+ RelativePath="..\..\source\XMPFiles\WXMPFiles.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPFiles\XMPFiles.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPFiles\XMPFiles_Impl.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="File Handlers"
+ >
+ <File
+ RelativePath="..\..\source\XMPFiles\FileHandlers\AVI_Handler.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPFiles\FileHandlers\Basic_Handler.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPFiles\FileHandlers\InDesign_Handler.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPFiles\FileHandlers\JPEG_Handler.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPFiles\FileHandlers\MOV_Handler.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPFiles\FileHandlers\MP3_Handler.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPFiles\FileHandlers\MPEG_Handler.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPFiles\FileHandlers\PNG_Handler.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPFiles\FileHandlers\PostScript_Handler.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPFiles\FileHandlers\PSD_Handler.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPFiles\FileHandlers\Scanner_Handler.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPFiles\FileHandlers\TIFF_Handler.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPFiles\FileHandlers\Trivial_Handler.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPFiles\FileHandlers\WAV_Handler.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Format Support"
+ >
+ <File
+ RelativePath="..\..\source\XMPFiles\FormatSupport\ID3_Support.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPFiles\FormatSupport\IPTC_Support.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPFiles\FormatSupport\PNG_Support.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPFiles\FormatSupport\PSIR_FileWriter.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPFiles\FormatSupport\PSIR_MemoryReader.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPFiles\FormatSupport\QuickTime_Support.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPFiles\FormatSupport\Reconcile_Impl.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPFiles\FormatSupport\ReconcileIPTC.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPFiles\FormatSupport\ReconcileLegacy.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPFiles\FormatSupport\ReconcileTIFF.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPFiles\FormatSupport\RIFF_Support.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPFiles\FormatSupport\TIFF_FileWriter.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPFiles\FormatSupport\TIFF_MemoryReader.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPFiles\FormatSupport\TIFF_Support.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\source\XMPFiles\FormatSupport\XMPScanner.cpp"
+ >
+ </File>
+ </Filter>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/build/vsnet/XMPToolkit.sln b/build/vsnet/XMPToolkit.sln
new file mode 100644
index 0000000..44aac01
--- /dev/null
+++ b/build/vsnet/XMPToolkit.sln
@@ -0,0 +1,25 @@
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XMPCore", "XMPCore.vcproj", "{C5BB1536-3776-4474-861D-B5923C610FE4}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XMPFiles Static", "XMPFiles.vcproj", "{B9A2E1F1-4E5C-49AC-B052-604CAE21F56E}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Release|Win32 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {C5BB1536-3776-4474-861D-B5923C610FE4}.Debug|Win32.ActiveCfg = Debug|Win32
+ {C5BB1536-3776-4474-861D-B5923C610FE4}.Debug|Win32.Build.0 = Debug|Win32
+ {C5BB1536-3776-4474-861D-B5923C610FE4}.Release|Win32.ActiveCfg = Release|Win32
+ {C5BB1536-3776-4474-861D-B5923C610FE4}.Release|Win32.Build.0 = Release|Win32
+ {B9A2E1F1-4E5C-49AC-B052-604CAE21F56E}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B9A2E1F1-4E5C-49AC-B052-604CAE21F56E}.Debug|Win32.Build.0 = Debug|Win32
+ {B9A2E1F1-4E5C-49AC-B052-604CAE21F56E}.Release|Win32.ActiveCfg = Release|Win32
+ {B9A2E1F1-4E5C-49AC-B052-604CAE21F56E}.Release|Win32.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/build/vsnet/expat_config.h b/build/vsnet/expat_config.h
new file mode 100644
index 0000000..945d0bd
--- /dev/null
+++ b/build/vsnet/expat_config.h
@@ -0,0 +1,95 @@
+/* expat_config.h. Generated by configure. */
+/* expat_config.h.in. Generated from configure.in by autoheader. */
+
+/* *** Tweaked by hand for 32 bit Windows builds */
+
+/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */
+#define BYTEORDER 1234
+
+/* Define to 1 if you have the `bcopy' function. */
+/* #define HAVE_BCOPY 1 */
+
+/* Define to 1 if you have the <check.h> header file. */
+/* #undef HAVE_CHECK_H */
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+/* #define HAVE_DLFCN_H 1 */
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+/* #define HAVE_FCNTL_H 1 */
+
+/* Define to 1 if you have the `getpagesize' function. */
+/* #define HAVE_GETPAGESIZE 1 */
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+/* #define HAVE_INTTYPES_H 1 */
+
+/* Define to 1 if you have the `memmove' function. */
+#define HAVE_MEMMOVE 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have a working `mmap' system call. */
+/* #define HAVE_MMAP 1 */
+
+/* Define to 1 if you have the <stdint.h> header file. */
+/* #define HAVE_STDINT_H 1 */
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+/* #define HAVE_STRINGS_H 1 */
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+/* #define HAVE_SYS_STAT_H 1 */
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+/* #define HAVE_SYS_TYPES_H 1 */
+
+/* Define to 1 if you have the <unistd.h> header file. */
+/* #define HAVE_UNISTD_H 1 */
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "expat-bugs@mail.libexpat.org"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "expat"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "expat 1.95.8"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "expat"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "1.95.8"
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* whether byteorder is bigendian */
+/* #define WORDS_BIGENDIAN 1 */
+
+/* Define to specify how much context to retain around the current parse
+ point. */
+#define XML_CONTEXT_BYTES 1024
+
+/* Define to make parameter entity parsing functionality available. */
+/* #define XML_DTD 1 */
+
+/* Define to make XML Namespaces functionality available. */
+#define XML_NS 1
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
+
+/* Define to `long' if <sys/types.h> does not define. */
+/* #undef off_t */
+
+/* Define to `unsigned' if <sys/types.h> does not define. */
+/* #undef size_t */
diff --git a/build/xcode/XMPToolkit-Common.xcconfig b/build/xcode/XMPToolkit-Common.xcconfig
new file mode 100644
index 0000000..4637c75
--- /dev/null
+++ b/build/xcode/XMPToolkit-Common.xcconfig
@@ -0,0 +1,63 @@
+PRODUCT_ROOT = ${PROJECT_DIR}/../..
+
+SOURCE_ROOT = ${PRODUCT_ROOT}/source
+PUBLIC_ROOT = ${PRODUCT_ROOT}/public
+
+EXPAT_ROOT = ${PRODUCT_ROOT}/third-party/expat
+
+SRCROOT = ${SOURCE_ROOT}
+
+DSTROOT =
+INSTALL_PATH =
+
+EXECUTABLE_PREFIX = lib
+EXECUTABLE_EXTENSION = a
+WRAPPER_EXTENSION =
+
+INSTALL_PATH =
+EXPORTED_SYMBOLS_FILE =
+LIBRARY_STYLE = STATIC
+ZERO_LINK = NO
+OTHER_LDFLAGS =
+
+INFOPLIST_FILE =
+INFOPLIST_PREPROCESS =
+INFOPLIST_PREFIX_HEADER =
+
+ARCHS = ppc i386
+MACOSX_DEPLOYMENT_TARGET = 10.3
+SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk
+
+SHARED_PRECOMPS_DIR =
+PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO
+GCC_PRECOMPILE_PREFIX_HEADER = NO
+
+HEADER_SEARCH_PATHS = ${PROJECT_DIR} ${PUBLIC_ROOT}/include ${SOURCE_ROOT}/XMPCore ${SOURCE_ROOT}/XMPFiles ${SOURCE_ROOT}/common ${EXPAT_ROOT}/lib /Developer/Headers/FlatCarbon
+
+COMMON_DEFINES = MAC_ENV=1 HAVE_EXPAT_CONFIG_H=1 XML_STATIC=1
+
+GCC_CHAR_IS_UNSIGNED_CHAR = YES
+GCC_ENABLE_PASCAL_STRINGS = NO
+GCC_SHORT_ENUMS = YES
+GCC_ONE_BYTE_BOOL = YES
+GCC_NO_COMMON_BLOCKS = YES
+GCC_FAST_MATH = YES
+
+GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES
+GCC_WARN_ABOUT_RETURN_TYPE = YES
+GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES
+GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES
+GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES
+GCC_WARN_MISSING_PARENTHESES = YES
+GCC_WARN_CHECK_SWITCH_STATEMENTS = YES
+GCC_WARN_UNKNOWN_PRAGMAS = YES
+GCC_WARN_SIGN_COMPARE = YES
+GCC_WARN_ABOUT_MISSING_NEWLINE = YES
+
+Comment_1 = "It would be nice to set these, but they cause a huge number of warnings, many from Expat."
+GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS = NO
+GCC_WARN_UNINITIALIZED_AUTOS = NO
+GCC_WARN_UNUSED_PARAMETER = NO
+GCC_WARN_UNUSED_VARIABLE = NO
+GCC_WARN_UNUSED_VALUE = NO
+GCC_WARN_SHADOW = NO
diff --git a/build/xcode/XMPToolkit-Debug.xcconfig b/build/xcode/XMPToolkit-Debug.xcconfig
new file mode 100644
index 0000000..7297bf4
--- /dev/null
+++ b/build/xcode/XMPToolkit-Debug.xcconfig
@@ -0,0 +1,12 @@
+BUILD_MODE = debug
+
+OBJROOT = ${PRODUCT_ROOT}/intermediate/macintosh/${BUILD_MODE}
+SYMROOT = ${PUBLIC_ROOT}/libraries/macintosh/${BUILD_MODE}
+
+CONFIGURATION_BUILD_DIR = ${SYMROOT}
+
+GCC_PREPROCESSOR_DEFINITIONS = ${COMMON_DEFINES} DEBUG=1 _DEBUG=1
+
+GCC_GENERATE_DEBUGGING_SYMBOLS = YES
+GCC_DEBUGGING_SYMBOLS = full
+GCC_OPTIMIZATION_LEVEL = 0
diff --git a/build/xcode/XMPToolkit-Release.xcconfig b/build/xcode/XMPToolkit-Release.xcconfig
new file mode 100644
index 0000000..f60710a
--- /dev/null
+++ b/build/xcode/XMPToolkit-Release.xcconfig
@@ -0,0 +1,12 @@
+BUILD_MODE = release
+
+OBJROOT = ${PRODUCT_ROOT}/intermediate/macintosh/${BUILD_MODE}
+SYMROOT = ${PUBLIC_ROOT}/libraries/macintosh/${BUILD_MODE}
+
+CONFIGURATION_BUILD_DIR = ${SYMROOT}
+
+GCC_PREPROCESSOR_DEFINITIONS = ${COMMON_DEFINES} NDEBUG=1
+
+GCC_GENERATE_DEBUGGING_SYMBOLS = NO
+GCC_DEBUGGING_SYMBOLS = used
+GCC_OPTIMIZATION_LEVEL = s
diff --git a/build/xcode/XMPToolkit.xcodeproj/project.pbxproj b/build/xcode/XMPToolkit.xcodeproj/project.pbxproj
new file mode 100644
index 0000000..a07e410
--- /dev/null
+++ b/build/xcode/XMPToolkit.xcodeproj/project.pbxproj
@@ -0,0 +1,790 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 42;
+ objects = {
+
+/* Begin PBXAggregateTarget section */
+ DCF912BC09A3E6970055523F /* Build All */ = {
+ isa = PBXAggregateTarget;
+ buildConfigurationList = DCF912C109A3E6C60055523F /* Build configuration list for PBXAggregateTarget "Build All" */;
+ buildPhases = (
+ );
+ dependencies = (
+ DCF912BE09A3E6A40055523F /* PBXTargetDependency */,
+ DCF912C009A3E6A70055523F /* PBXTargetDependency */,
+ 01FC6D920B7B7858008559A1 /* PBXTargetDependency */,
+ 01FC6D900B7B7858008559A1 /* PBXTargetDependency */,
+ );
+ name = "Build All";
+ productName = "Build All";
+ };
+/* End PBXAggregateTarget section */
+
+/* Begin PBXBuildFile section */
+ 0102D1C70B7B8471001AF6F7 /* MD5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 014A2AA10B78FF1400A80B2A /* MD5.cpp */; };
+ 0102D1C80B7B8472001AF6F7 /* MD5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 014A2AA10B78FF1400A80B2A /* MD5.cpp */; };
+ 014796520B776899007CF8F4 /* XMPCore_Impl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 014796510B776899007CF8F4 /* XMPCore_Impl.cpp */; };
+ 014796530B776899007CF8F4 /* XMPCore_Impl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 014796510B776899007CF8F4 /* XMPCore_Impl.cpp */; };
+ 014A2AA20B78FF2C00A80B2A /* MD5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 014A2AA10B78FF1400A80B2A /* MD5.cpp */; };
+ 014A2AA30B78FF2C00A80B2A /* MD5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 014A2AA10B78FF1400A80B2A /* MD5.cpp */; };
+ 01FC6CE80B7B6D65008559A1 /* WXMPFiles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 014A2AAD0B78FFD200A80B2A /* WXMPFiles.cpp */; };
+ 01FC6D060B7B7514008559A1 /* WXMPFiles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 014A2AAD0B78FFD200A80B2A /* WXMPFiles.cpp */; };
+ 01FC6D3D0B7B7789008559A1 /* ID3_Support.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D2C0B7B7773008559A1 /* ID3_Support.cpp */; };
+ 01FC6D3E0B7B7789008559A1 /* IPTC_Support.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D2D0B7B7773008559A1 /* IPTC_Support.cpp */; };
+ 01FC6D3F0B7B7789008559A1 /* PNG_Support.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D2E0B7B7773008559A1 /* PNG_Support.cpp */; };
+ 01FC6D400B7B7789008559A1 /* PSIR_FileWriter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D2F0B7B7773008559A1 /* PSIR_FileWriter.cpp */; };
+ 01FC6D410B7B7789008559A1 /* PSIR_MemoryReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D300B7B7773008559A1 /* PSIR_MemoryReader.cpp */; };
+ 01FC6D420B7B7789008559A1 /* QuickTime_Support.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D310B7B7773008559A1 /* QuickTime_Support.cpp */; };
+ 01FC6D430B7B7789008559A1 /* Reconcile_Impl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D320B7B7773008559A1 /* Reconcile_Impl.cpp */; };
+ 01FC6D440B7B7789008559A1 /* ReconcileIPTC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D330B7B7773008559A1 /* ReconcileIPTC.cpp */; };
+ 01FC6D450B7B7789008559A1 /* ReconcileLegacy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D340B7B7773008559A1 /* ReconcileLegacy.cpp */; };
+ 01FC6D460B7B7789008559A1 /* ReconcileTIFF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D350B7B7773008559A1 /* ReconcileTIFF.cpp */; };
+ 01FC6D470B7B7789008559A1 /* RIFF_Support.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D360B7B7773008559A1 /* RIFF_Support.cpp */; };
+ 01FC6D490B7B7789008559A1 /* TIFF_FileWriter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D380B7B7773008559A1 /* TIFF_FileWriter.cpp */; };
+ 01FC6D4A0B7B7789008559A1 /* TIFF_MemoryReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D390B7B7773008559A1 /* TIFF_MemoryReader.cpp */; };
+ 01FC6D4B0B7B7789008559A1 /* TIFF_Support.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D3A0B7B7773008559A1 /* TIFF_Support.cpp */; };
+ 01FC6D4C0B7B7789008559A1 /* XMPScanner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D3B0B7B7773008559A1 /* XMPScanner.cpp */; };
+ 01FC6D4E0B7B778A008559A1 /* ID3_Support.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D2C0B7B7773008559A1 /* ID3_Support.cpp */; };
+ 01FC6D4F0B7B778A008559A1 /* IPTC_Support.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D2D0B7B7773008559A1 /* IPTC_Support.cpp */; };
+ 01FC6D500B7B778A008559A1 /* PNG_Support.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D2E0B7B7773008559A1 /* PNG_Support.cpp */; };
+ 01FC6D510B7B778A008559A1 /* PSIR_FileWriter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D2F0B7B7773008559A1 /* PSIR_FileWriter.cpp */; };
+ 01FC6D520B7B778A008559A1 /* PSIR_MemoryReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D300B7B7773008559A1 /* PSIR_MemoryReader.cpp */; };
+ 01FC6D530B7B778A008559A1 /* QuickTime_Support.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D310B7B7773008559A1 /* QuickTime_Support.cpp */; };
+ 01FC6D540B7B778A008559A1 /* Reconcile_Impl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D320B7B7773008559A1 /* Reconcile_Impl.cpp */; };
+ 01FC6D550B7B778A008559A1 /* ReconcileIPTC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D330B7B7773008559A1 /* ReconcileIPTC.cpp */; };
+ 01FC6D560B7B778A008559A1 /* ReconcileLegacy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D340B7B7773008559A1 /* ReconcileLegacy.cpp */; };
+ 01FC6D570B7B778A008559A1 /* ReconcileTIFF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D350B7B7773008559A1 /* ReconcileTIFF.cpp */; };
+ 01FC6D580B7B778A008559A1 /* RIFF_Support.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D360B7B7773008559A1 /* RIFF_Support.cpp */; };
+ 01FC6D5A0B7B778A008559A1 /* TIFF_FileWriter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D380B7B7773008559A1 /* TIFF_FileWriter.cpp */; };
+ 01FC6D5B0B7B778A008559A1 /* TIFF_MemoryReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D390B7B7773008559A1 /* TIFF_MemoryReader.cpp */; };
+ 01FC6D5C0B7B778A008559A1 /* TIFF_Support.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D3A0B7B7773008559A1 /* TIFF_Support.cpp */; };
+ 01FC6D5D0B7B778A008559A1 /* XMPScanner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D3B0B7B7773008559A1 /* XMPScanner.cpp */; };
+ 01FC6D5F0B7B7799008559A1 /* AVI_Handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D160B7B75F9008559A1 /* AVI_Handler.cpp */; };
+ 01FC6D600B7B7799008559A1 /* Basic_Handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D170B7B75F9008559A1 /* Basic_Handler.cpp */; };
+ 01FC6D610B7B7799008559A1 /* InDesign_Handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D180B7B75F9008559A1 /* InDesign_Handler.cpp */; };
+ 01FC6D620B7B7799008559A1 /* JPEG_Handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D190B7B75F9008559A1 /* JPEG_Handler.cpp */; };
+ 01FC6D640B7B7799008559A1 /* MOV_Handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D1B0B7B75F9008559A1 /* MOV_Handler.cpp */; };
+ 01FC6D650B7B7799008559A1 /* MP3_Handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D1C0B7B75F9008559A1 /* MP3_Handler.cpp */; };
+ 01FC6D670B7B7799008559A1 /* MPEG_Handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D1E0B7B75F9008559A1 /* MPEG_Handler.cpp */; };
+ 01FC6D680B7B7799008559A1 /* PNG_Handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D1F0B7B75F9008559A1 /* PNG_Handler.cpp */; };
+ 01FC6D690B7B7799008559A1 /* PostScript_Handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D200B7B75F9008559A1 /* PostScript_Handler.cpp */; };
+ 01FC6D6A0B7B7799008559A1 /* PSD_Handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D210B7B75F9008559A1 /* PSD_Handler.cpp */; };
+ 01FC6D6B0B7B7799008559A1 /* Scanner_Handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D220B7B75F9008559A1 /* Scanner_Handler.cpp */; };
+ 01FC6D6D0B7B7799008559A1 /* TIFF_Handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D240B7B75F9008559A1 /* TIFF_Handler.cpp */; };
+ 01FC6D6E0B7B7799008559A1 /* Trivial_Handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D250B7B75F9008559A1 /* Trivial_Handler.cpp */; };
+ 01FC6D6F0B7B7799008559A1 /* WAV_Handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D260B7B75F9008559A1 /* WAV_Handler.cpp */; };
+ 01FC6D710B7B779A008559A1 /* AVI_Handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D160B7B75F9008559A1 /* AVI_Handler.cpp */; };
+ 01FC6D720B7B779A008559A1 /* Basic_Handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D170B7B75F9008559A1 /* Basic_Handler.cpp */; };
+ 01FC6D730B7B779A008559A1 /* InDesign_Handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D180B7B75F9008559A1 /* InDesign_Handler.cpp */; };
+ 01FC6D740B7B779A008559A1 /* JPEG_Handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D190B7B75F9008559A1 /* JPEG_Handler.cpp */; };
+ 01FC6D760B7B779A008559A1 /* MOV_Handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D1B0B7B75F9008559A1 /* MOV_Handler.cpp */; };
+ 01FC6D770B7B779A008559A1 /* MP3_Handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D1C0B7B75F9008559A1 /* MP3_Handler.cpp */; };
+ 01FC6D790B7B779A008559A1 /* MPEG_Handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D1E0B7B75F9008559A1 /* MPEG_Handler.cpp */; };
+ 01FC6D7A0B7B779A008559A1 /* PNG_Handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D1F0B7B75F9008559A1 /* PNG_Handler.cpp */; };
+ 01FC6D7B0B7B779A008559A1 /* PostScript_Handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D200B7B75F9008559A1 /* PostScript_Handler.cpp */; };
+ 01FC6D7C0B7B779A008559A1 /* PSD_Handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D210B7B75F9008559A1 /* PSD_Handler.cpp */; };
+ 01FC6D7D0B7B779A008559A1 /* Scanner_Handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D220B7B75F9008559A1 /* Scanner_Handler.cpp */; };
+ 01FC6D7F0B7B779A008559A1 /* TIFF_Handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D240B7B75F9008559A1 /* TIFF_Handler.cpp */; };
+ 01FC6D800B7B779A008559A1 /* Trivial_Handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D250B7B75F9008559A1 /* Trivial_Handler.cpp */; };
+ 01FC6D810B7B779A008559A1 /* WAV_Handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D260B7B75F9008559A1 /* WAV_Handler.cpp */; };
+ 01FC6D870B7B77D9008559A1 /* WXMPFiles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D840B7B77C1008559A1 /* WXMPFiles.cpp */; };
+ 01FC6D880B7B77D9008559A1 /* XMPFiles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D850B7B77C1008559A1 /* XMPFiles.cpp */; };
+ 01FC6D890B7B77D9008559A1 /* XMPFiles_Impl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D860B7B77C1008559A1 /* XMPFiles_Impl.cpp */; };
+ 01FC6D8A0B7B77DA008559A1 /* WXMPFiles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D840B7B77C1008559A1 /* WXMPFiles.cpp */; };
+ 01FC6D8B0B7B77DA008559A1 /* XMPFiles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D850B7B77C1008559A1 /* XMPFiles.cpp */; };
+ 01FC6D8C0B7B77DA008559A1 /* XMPFiles_Impl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 01FC6D860B7B77C1008559A1 /* XMPFiles_Impl.cpp */; };
+ DC493270089A94CE003ADAAF /* XMPIterator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07601E46085F950A003FEB33 /* XMPIterator.cpp */; };
+ DC493271089A94CE003ADAAF /* XMPMeta.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07601E47085F950A003FEB33 /* XMPMeta.cpp */; };
+ DC493272089A94CE003ADAAF /* XMPMeta-GetSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DC87E517089960DB000A7ADF /* XMPMeta-GetSet.cpp */; };
+ DC493273089A94CE003ADAAF /* XMPMeta-Parse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DC87E518089960DB000A7ADF /* XMPMeta-Parse.cpp */; };
+ DC493274089A94CE003ADAAF /* XMPMeta-Serialize.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DC87E519089960DB000A7ADF /* XMPMeta-Serialize.cpp */; };
+ DC493275089A94CE003ADAAF /* XMPUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07601E48085F950A003FEB33 /* XMPUtils.cpp */; };
+ DC49327B089A94E6003ADAAF /* ExpatAdapter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07601E73085F9791003FEB33 /* ExpatAdapter.cpp */; };
+ DC49327D089A94E6003ADAAF /* ParseRDF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07601E75085F9791003FEB33 /* ParseRDF.cpp */; };
+ DC49327E089A94E6003ADAAF /* UnicodeConversions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07601E76085F9791003FEB33 /* UnicodeConversions.cpp */; };
+ DC49327F089A94FF003ADAAF /* xmlparse.c in Sources */ = {isa = PBXBuildFile; fileRef = DC14FDD2089A8591004D5310 /* xmlparse.c */; };
+ DC493280089A94FF003ADAAF /* xmlrole.c in Sources */ = {isa = PBXBuildFile; fileRef = DC14FDD3089A8591004D5310 /* xmlrole.c */; };
+ DC493281089A94FF003ADAAF /* xmltok.c in Sources */ = {isa = PBXBuildFile; fileRef = DC14FDD4089A8591004D5310 /* xmltok.c */; };
+ DC493282089A950C003ADAAF /* WXMPIterator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07601E89085F9A39003FEB33 /* WXMPIterator.cpp */; };
+ DC493283089A950C003ADAAF /* WXMPMeta.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07601E8A085F9A39003FEB33 /* WXMPMeta.cpp */; };
+ DC493284089A950C003ADAAF /* WXMPUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07601E8B085F9A39003FEB33 /* WXMPUtils.cpp */; };
+ DC493297089A9726003ADAAF /* XMPIterator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07601E46085F950A003FEB33 /* XMPIterator.cpp */; };
+ DC493298089A9726003ADAAF /* XMPMeta.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07601E47085F950A003FEB33 /* XMPMeta.cpp */; };
+ DC493299089A9726003ADAAF /* XMPMeta-GetSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DC87E517089960DB000A7ADF /* XMPMeta-GetSet.cpp */; };
+ DC49329A089A9726003ADAAF /* XMPMeta-Parse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DC87E518089960DB000A7ADF /* XMPMeta-Parse.cpp */; };
+ DC49329B089A9726003ADAAF /* XMPMeta-Serialize.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DC87E519089960DB000A7ADF /* XMPMeta-Serialize.cpp */; };
+ DC49329C089A9726003ADAAF /* XMPUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07601E48085F950A003FEB33 /* XMPUtils.cpp */; };
+ DC4932A2089A9726003ADAAF /* ExpatAdapter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07601E73085F9791003FEB33 /* ExpatAdapter.cpp */; };
+ DC4932A4089A9726003ADAAF /* ParseRDF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07601E75085F9791003FEB33 /* ParseRDF.cpp */; };
+ DC4932A5089A9726003ADAAF /* UnicodeConversions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07601E76085F9791003FEB33 /* UnicodeConversions.cpp */; };
+ DC4932A6089A9726003ADAAF /* xmlparse.c in Sources */ = {isa = PBXBuildFile; fileRef = DC14FDD2089A8591004D5310 /* xmlparse.c */; };
+ DC4932A7089A9726003ADAAF /* xmlrole.c in Sources */ = {isa = PBXBuildFile; fileRef = DC14FDD3089A8591004D5310 /* xmlrole.c */; };
+ DC4932A8089A9726003ADAAF /* xmltok.c in Sources */ = {isa = PBXBuildFile; fileRef = DC14FDD4089A8591004D5310 /* xmltok.c */; };
+ DC4932A9089A9726003ADAAF /* WXMPIterator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07601E89085F9A39003FEB33 /* WXMPIterator.cpp */; };
+ DC4932AA089A9726003ADAAF /* WXMPMeta.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07601E8A085F9A39003FEB33 /* WXMPMeta.cpp */; };
+ DC4932AB089A9726003ADAAF /* WXMPUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07601E8B085F9A39003FEB33 /* WXMPUtils.cpp */; };
+ DCEDFE2509ACBECF00D86460 /* XMPUtils-FileInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DCEDFE2409ACBECF00D86460 /* XMPUtils-FileInfo.cpp */; };
+ DCEDFE2609ACBECF00D86460 /* XMPUtils-FileInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DCEDFE2409ACBECF00D86460 /* XMPUtils-FileInfo.cpp */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXContainerItemProxy section */
+ 01FC6D8F0B7B7858008559A1 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 01FC6CF20B7B7514008559A1;
+ remoteInfo = "XMPFiles Release";
+ };
+ 01FC6D910B7B7858008559A1 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 01FC6CD40B7B6D65008559A1;
+ remoteInfo = "XMPFiles Debug";
+ };
+ DCF912BD09A3E6A40055523F /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = DC49326B089A9441003ADAAF;
+ remoteInfo = "XMPCore Debug";
+ };
+ DCF912BF09A3E6A70055523F /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = DC493293089A9726003ADAAF;
+ remoteInfo = "XMPCore Release";
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXFileReference section */
+ 0147964D0B776823007CF8F4 /* XMPCore_Impl.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = XMPCore_Impl.hpp; sourceTree = "<group>"; };
+ 014796510B776899007CF8F4 /* XMPCore_Impl.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = XMPCore_Impl.cpp; sourceTree = "<group>"; };
+ 014A29EF0B78E2C300A80B2A /* UnicodeConversions.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; name = UnicodeConversions.hpp; path = ../common/UnicodeConversions.hpp; sourceTree = "<group>"; };
+ 014A29F40B78E2F300A80B2A /* UnicodeInlines.incl_cpp */ = {isa = PBXFileReference; lastKnownFileType = text; name = UnicodeInlines.incl_cpp; path = ../common/UnicodeInlines.incl_cpp; sourceTree = "<group>"; };
+ 014A2A040B78E5C500A80B2A /* XMP_BuildInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = XMP_BuildInfo.h; path = ../../build/XMP_BuildInfo.h; sourceTree = "<group>"; };
+ 014A2AA10B78FF1400A80B2A /* MD5.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MD5.cpp; path = "../../third-party/MD5/MD5.cpp"; sourceTree = "<group>"; };
+ 014A2AAD0B78FFD200A80B2A /* WXMPFiles.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = WXMPFiles.cpp; path = ../XMPFiles/WXMPFiles.cpp; sourceTree = "<group>"; };
+ 01FC6CEC0B7B6D65008559A1 /* libXMPFilesStaticDebug.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libXMPFilesStaticDebug.a; sourceTree = BUILT_PRODUCTS_DIR; };
+ 01FC6D0A0B7B7514008559A1 /* libXMPFilesStaticRelease.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libXMPFilesStaticRelease.a; sourceTree = BUILT_PRODUCTS_DIR; };
+ 01FC6D160B7B75F9008559A1 /* AVI_Handler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = AVI_Handler.cpp; path = ../../source/XMPFiles/FileHandlers/AVI_Handler.cpp; sourceTree = "<group>"; };
+ 01FC6D170B7B75F9008559A1 /* Basic_Handler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Basic_Handler.cpp; path = ../../source/XMPFiles/FileHandlers/Basic_Handler.cpp; sourceTree = "<group>"; };
+ 01FC6D180B7B75F9008559A1 /* InDesign_Handler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = InDesign_Handler.cpp; path = ../../source/XMPFiles/FileHandlers/InDesign_Handler.cpp; sourceTree = "<group>"; };
+ 01FC6D190B7B75F9008559A1 /* JPEG_Handler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = JPEG_Handler.cpp; path = ../../source/XMPFiles/FileHandlers/JPEG_Handler.cpp; sourceTree = "<group>"; };
+ 01FC6D1B0B7B75F9008559A1 /* MOV_Handler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MOV_Handler.cpp; path = ../../source/XMPFiles/FileHandlers/MOV_Handler.cpp; sourceTree = "<group>"; };
+ 01FC6D1C0B7B75F9008559A1 /* MP3_Handler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MP3_Handler.cpp; path = ../../source/XMPFiles/FileHandlers/MP3_Handler.cpp; sourceTree = "<group>"; };
+ 01FC6D1E0B7B75F9008559A1 /* MPEG_Handler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MPEG_Handler.cpp; path = ../../source/XMPFiles/FileHandlers/MPEG_Handler.cpp; sourceTree = "<group>"; };
+ 01FC6D1F0B7B75F9008559A1 /* PNG_Handler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PNG_Handler.cpp; path = ../../source/XMPFiles/FileHandlers/PNG_Handler.cpp; sourceTree = "<group>"; };
+ 01FC6D200B7B75F9008559A1 /* PostScript_Handler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PostScript_Handler.cpp; path = ../../source/XMPFiles/FileHandlers/PostScript_Handler.cpp; sourceTree = "<group>"; };
+ 01FC6D210B7B75F9008559A1 /* PSD_Handler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PSD_Handler.cpp; path = ../../source/XMPFiles/FileHandlers/PSD_Handler.cpp; sourceTree = "<group>"; };
+ 01FC6D220B7B75F9008559A1 /* Scanner_Handler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Scanner_Handler.cpp; path = ../../source/XMPFiles/FileHandlers/Scanner_Handler.cpp; sourceTree = "<group>"; };
+ 01FC6D240B7B75F9008559A1 /* TIFF_Handler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = TIFF_Handler.cpp; path = ../../source/XMPFiles/FileHandlers/TIFF_Handler.cpp; sourceTree = "<group>"; };
+ 01FC6D250B7B75F9008559A1 /* Trivial_Handler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Trivial_Handler.cpp; path = ../../source/XMPFiles/FileHandlers/Trivial_Handler.cpp; sourceTree = "<group>"; };
+ 01FC6D260B7B75F9008559A1 /* WAV_Handler.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = WAV_Handler.cpp; path = ../../source/XMPFiles/FileHandlers/WAV_Handler.cpp; sourceTree = "<group>"; };
+ 01FC6D2C0B7B7773008559A1 /* ID3_Support.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ID3_Support.cpp; path = ../../source/XMPFiles/FormatSupport/ID3_Support.cpp; sourceTree = "<group>"; };
+ 01FC6D2D0B7B7773008559A1 /* IPTC_Support.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = IPTC_Support.cpp; path = ../../source/XMPFiles/FormatSupport/IPTC_Support.cpp; sourceTree = "<group>"; };
+ 01FC6D2E0B7B7773008559A1 /* PNG_Support.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PNG_Support.cpp; path = ../../source/XMPFiles/FormatSupport/PNG_Support.cpp; sourceTree = "<group>"; };
+ 01FC6D2F0B7B7773008559A1 /* PSIR_FileWriter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PSIR_FileWriter.cpp; path = ../../source/XMPFiles/FormatSupport/PSIR_FileWriter.cpp; sourceTree = "<group>"; };
+ 01FC6D300B7B7773008559A1 /* PSIR_MemoryReader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = PSIR_MemoryReader.cpp; path = ../../source/XMPFiles/FormatSupport/PSIR_MemoryReader.cpp; sourceTree = "<group>"; };
+ 01FC6D310B7B7773008559A1 /* QuickTime_Support.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = QuickTime_Support.cpp; path = ../../source/XMPFiles/FormatSupport/QuickTime_Support.cpp; sourceTree = "<group>"; };
+ 01FC6D320B7B7773008559A1 /* Reconcile_Impl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Reconcile_Impl.cpp; path = ../../source/XMPFiles/FormatSupport/Reconcile_Impl.cpp; sourceTree = "<group>"; };
+ 01FC6D330B7B7773008559A1 /* ReconcileIPTC.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ReconcileIPTC.cpp; path = ../../source/XMPFiles/FormatSupport/ReconcileIPTC.cpp; sourceTree = "<group>"; };
+ 01FC6D340B7B7773008559A1 /* ReconcileLegacy.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ReconcileLegacy.cpp; path = ../../source/XMPFiles/FormatSupport/ReconcileLegacy.cpp; sourceTree = "<group>"; };
+ 01FC6D350B7B7773008559A1 /* ReconcileTIFF.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ReconcileTIFF.cpp; path = ../../source/XMPFiles/FormatSupport/ReconcileTIFF.cpp; sourceTree = "<group>"; };
+ 01FC6D360B7B7773008559A1 /* RIFF_Support.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = RIFF_Support.cpp; path = ../../source/XMPFiles/FormatSupport/RIFF_Support.cpp; sourceTree = "<group>"; };
+ 01FC6D380B7B7773008559A1 /* TIFF_FileWriter.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = TIFF_FileWriter.cpp; path = ../../source/XMPFiles/FormatSupport/TIFF_FileWriter.cpp; sourceTree = "<group>"; };
+ 01FC6D390B7B7773008559A1 /* TIFF_MemoryReader.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = TIFF_MemoryReader.cpp; path = ../../source/XMPFiles/FormatSupport/TIFF_MemoryReader.cpp; sourceTree = "<group>"; };
+ 01FC6D3A0B7B7773008559A1 /* TIFF_Support.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = TIFF_Support.cpp; path = ../../source/XMPFiles/FormatSupport/TIFF_Support.cpp; sourceTree = "<group>"; };
+ 01FC6D3B0B7B7773008559A1 /* XMPScanner.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = XMPScanner.cpp; path = ../../source/XMPFiles/FormatSupport/XMPScanner.cpp; sourceTree = "<group>"; };
+ 01FC6D840B7B77C1008559A1 /* WXMPFiles.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = WXMPFiles.cpp; path = ../../source/XMPFiles/WXMPFiles.cpp; sourceTree = "<group>"; };
+ 01FC6D850B7B77C1008559A1 /* XMPFiles.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = XMPFiles.cpp; path = ../../source/XMPFiles/XMPFiles.cpp; sourceTree = "<group>"; };
+ 01FC6D860B7B77C1008559A1 /* XMPFiles_Impl.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = XMPFiles_Impl.cpp; path = ../../source/XMPFiles/XMPFiles_Impl.cpp; sourceTree = "<group>"; };
+ 07601E46085F950A003FEB33 /* XMPIterator.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = XMPIterator.cpp; sourceTree = "<group>"; };
+ 07601E47085F950A003FEB33 /* XMPMeta.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = XMPMeta.cpp; sourceTree = "<group>"; };
+ 07601E48085F950A003FEB33 /* XMPUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = XMPUtils.cpp; sourceTree = "<group>"; };
+ 07601E73085F9791003FEB33 /* ExpatAdapter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = ExpatAdapter.cpp; sourceTree = "<group>"; };
+ 07601E75085F9791003FEB33 /* ParseRDF.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = ParseRDF.cpp; sourceTree = "<group>"; };
+ 07601E76085F9791003FEB33 /* UnicodeConversions.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = UnicodeConversions.cpp; path = ../common/UnicodeConversions.cpp; sourceTree = "<group>"; };
+ 07601E89085F9A39003FEB33 /* WXMPIterator.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = WXMPIterator.cpp; sourceTree = "<group>"; };
+ 07601E8A085F9A39003FEB33 /* WXMPMeta.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = WXMPMeta.cpp; sourceTree = "<group>"; };
+ 07601E8B085F9A39003FEB33 /* WXMPUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = WXMPUtils.cpp; sourceTree = "<group>"; };
+ 07601E92085F9A72003FEB33 /* XMPIterator.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = XMPIterator.hpp; sourceTree = "<group>"; };
+ 07601E93085F9A72003FEB33 /* XMPMeta.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = XMPMeta.hpp; sourceTree = "<group>"; };
+ 07601E94085F9A72003FEB33 /* XMPUtils.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = XMPUtils.hpp; sourceTree = "<group>"; };
+ 07601E95085F9A88003FEB33 /* XMP_Const.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = XMP_Const.h; sourceTree = "<group>"; };
+ 07601E97085F9AB8003FEB33 /* TXMPMeta.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = TXMPMeta.hpp; sourceTree = "<group>"; };
+ 07601E98085F9AB8003FEB33 /* TXMPUtils.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = TXMPUtils.hpp; sourceTree = "<group>"; };
+ 07601E99085F9AB8003FEB33 /* XMP_Environment.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = XMP_Environment.h; sourceTree = "<group>"; };
+ 07601E9A085F9AB8003FEB33 /* XMP_Version.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = XMP_Version.h; sourceTree = "<group>"; };
+ 07601E9B085F9AB8003FEB33 /* XMP.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = XMP.hpp; sourceTree = "<group>"; };
+ DC14FDD2089A8591004D5310 /* xmlparse.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = xmlparse.c; sourceTree = "<group>"; };
+ DC14FDD3089A8591004D5310 /* xmlrole.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = xmlrole.c; sourceTree = "<group>"; };
+ DC14FDD4089A8591004D5310 /* xmltok.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = xmltok.c; sourceTree = "<group>"; };
+ DC49326C089A9441003ADAAF /* libXMPCoreStaticDebug.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libXMPCoreStaticDebug.a; sourceTree = BUILT_PRODUCTS_DIR; };
+ DC4932B0089A9726003ADAAF /* libXMPCoreStaticRelease.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libXMPCoreStaticRelease.a; sourceTree = BUILT_PRODUCTS_DIR; };
+ DC87E517089960DB000A7ADF /* XMPMeta-GetSet.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = "XMPMeta-GetSet.cpp"; sourceTree = "<group>"; };
+ DC87E518089960DB000A7ADF /* XMPMeta-Parse.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = "XMPMeta-Parse.cpp"; sourceTree = "<group>"; };
+ DC87E519089960DB000A7ADF /* XMPMeta-Serialize.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = "XMPMeta-Serialize.cpp"; sourceTree = "<group>"; };
+ DCE400F60951DA740040D71F /* TXMPIterator.hpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; path = TXMPIterator.hpp; sourceTree = "<group>"; };
+ DCE400F70951DAA90040D71F /* XMPToolkit-Common.xcconfig */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xcconfig; path = "XMPToolkit-Common.xcconfig"; sourceTree = "<group>"; };
+ DCE400F80951DAA90040D71F /* XMPToolkit-Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xcconfig; path = "XMPToolkit-Debug.xcconfig"; sourceTree = "<group>"; };
+ DCE400F90951DAA90040D71F /* XMPToolkit-Release.xcconfig */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xcconfig; path = "XMPToolkit-Release.xcconfig"; sourceTree = "<group>"; };
+ DCEDFE2409ACBECF00D86460 /* XMPUtils-FileInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = "XMPUtils-FileInfo.cpp"; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 01FC6CE90B7B6D65008559A1 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 01FC6D070B7B7514008559A1 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ DC49326A089A9441003ADAAF /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ DC4932AC089A9726003ADAAF /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 014A2AB10B79001E00A80B2A /* Toolkit Files */ = {
+ isa = PBXGroup;
+ children = (
+ 01FC6D840B7B77C1008559A1 /* WXMPFiles.cpp */,
+ 01FC6D850B7B77C1008559A1 /* XMPFiles.cpp */,
+ 01FC6D860B7B77C1008559A1 /* XMPFiles_Impl.cpp */,
+ 01FC6CEE0B7B7462008559A1 /* Format Support */,
+ 01FC6CED0B7B7458008559A1 /* File Handlers */,
+ );
+ name = "Toolkit Files";
+ sourceTree = "<group>";
+ };
+ 01FC6CED0B7B7458008559A1 /* File Handlers */ = {
+ isa = PBXGroup;
+ children = (
+ 01FC6D160B7B75F9008559A1 /* AVI_Handler.cpp */,
+ 01FC6D170B7B75F9008559A1 /* Basic_Handler.cpp */,
+ 01FC6D180B7B75F9008559A1 /* InDesign_Handler.cpp */,
+ 01FC6D190B7B75F9008559A1 /* JPEG_Handler.cpp */,
+ 01FC6D1B0B7B75F9008559A1 /* MOV_Handler.cpp */,
+ 01FC6D1C0B7B75F9008559A1 /* MP3_Handler.cpp */,
+ 01FC6D1E0B7B75F9008559A1 /* MPEG_Handler.cpp */,
+ 01FC6D1F0B7B75F9008559A1 /* PNG_Handler.cpp */,
+ 01FC6D200B7B75F9008559A1 /* PostScript_Handler.cpp */,
+ 01FC6D210B7B75F9008559A1 /* PSD_Handler.cpp */,
+ 01FC6D220B7B75F9008559A1 /* Scanner_Handler.cpp */,
+ 01FC6D240B7B75F9008559A1 /* TIFF_Handler.cpp */,
+ 01FC6D250B7B75F9008559A1 /* Trivial_Handler.cpp */,
+ 01FC6D260B7B75F9008559A1 /* WAV_Handler.cpp */,
+ );
+ name = "File Handlers";
+ sourceTree = "<group>";
+ };
+ 01FC6CEE0B7B7462008559A1 /* Format Support */ = {
+ isa = PBXGroup;
+ children = (
+ 01FC6D2C0B7B7773008559A1 /* ID3_Support.cpp */,
+ 01FC6D2D0B7B7773008559A1 /* IPTC_Support.cpp */,
+ 01FC6D2E0B7B7773008559A1 /* PNG_Support.cpp */,
+ 01FC6D2F0B7B7773008559A1 /* PSIR_FileWriter.cpp */,
+ 01FC6D300B7B7773008559A1 /* PSIR_MemoryReader.cpp */,
+ 01FC6D310B7B7773008559A1 /* QuickTime_Support.cpp */,
+ 01FC6D320B7B7773008559A1 /* Reconcile_Impl.cpp */,
+ 01FC6D330B7B7773008559A1 /* ReconcileIPTC.cpp */,
+ 01FC6D340B7B7773008559A1 /* ReconcileLegacy.cpp */,
+ 01FC6D350B7B7773008559A1 /* ReconcileTIFF.cpp */,
+ 01FC6D360B7B7773008559A1 /* RIFF_Support.cpp */,
+ 01FC6D380B7B7773008559A1 /* TIFF_FileWriter.cpp */,
+ 01FC6D390B7B7773008559A1 /* TIFF_MemoryReader.cpp */,
+ 01FC6D3A0B7B7773008559A1 /* TIFF_Support.cpp */,
+ 01FC6D3B0B7B7773008559A1 /* XMPScanner.cpp */,
+ );
+ name = "Format Support";
+ sourceTree = "<group>";
+ };
+ 07601E35085F945B003FEB33 /* Build Extras */ = {
+ isa = PBXGroup;
+ children = (
+ DCE400F70951DAA90040D71F /* XMPToolkit-Common.xcconfig */,
+ DCE400F80951DAA90040D71F /* XMPToolkit-Debug.xcconfig */,
+ DCE400F90951DAA90040D71F /* XMPToolkit-Release.xcconfig */,
+ );
+ name = "Build Extras";
+ sourceTree = "<group>";
+ };
+ 07601E38085F9469003FEB33 /* Public Headers and Glue */ = {
+ isa = PBXGroup;
+ children = (
+ 07601E95085F9A88003FEB33 /* XMP_Const.h */,
+ DCE400F60951DA740040D71F /* TXMPIterator.hpp */,
+ 07601E97085F9AB8003FEB33 /* TXMPMeta.hpp */,
+ 07601E98085F9AB8003FEB33 /* TXMPUtils.hpp */,
+ 07601E99085F9AB8003FEB33 /* XMP_Environment.h */,
+ 07601E9A085F9AB8003FEB33 /* XMP_Version.h */,
+ 07601E9B085F9AB8003FEB33 /* XMP.hpp */,
+ );
+ name = "Public Headers and Glue";
+ path = ../../public/include;
+ sourceTree = "<group>";
+ };
+ 07601E3A085F947B003FEB33 /* Internal Headers */ = {
+ isa = PBXGroup;
+ children = (
+ 014A2A040B78E5C500A80B2A /* XMP_BuildInfo.h */,
+ 0147964D0B776823007CF8F4 /* XMPCore_Impl.hpp */,
+ 07601E92085F9A72003FEB33 /* XMPIterator.hpp */,
+ 07601E93085F9A72003FEB33 /* XMPMeta.hpp */,
+ 07601E94085F9A72003FEB33 /* XMPUtils.hpp */,
+ 014A29EF0B78E2C300A80B2A /* UnicodeConversions.hpp */,
+ 014A29F40B78E2F300A80B2A /* UnicodeInlines.incl_cpp */,
+ );
+ name = "Internal Headers";
+ path = ../../source/XMPCore;
+ sourceTree = "<group>";
+ };
+ 07601E3C085F9484003FEB33 /* ABI Wrappers */ = {
+ isa = PBXGroup;
+ children = (
+ 07601E89085F9A39003FEB33 /* WXMPIterator.cpp */,
+ 07601E8A085F9A39003FEB33 /* WXMPMeta.cpp */,
+ 07601E8B085F9A39003FEB33 /* WXMPUtils.cpp */,
+ 014A2AAD0B78FFD200A80B2A /* WXMPFiles.cpp */,
+ );
+ name = "ABI Wrappers";
+ path = ../../source/XMPCore;
+ sourceTree = "<group>";
+ };
+ 07601E40085F949B003FEB33 /* Utilities */ = {
+ isa = PBXGroup;
+ children = (
+ 07601E73085F9791003FEB33 /* ExpatAdapter.cpp */,
+ 07601E75085F9791003FEB33 /* ParseRDF.cpp */,
+ 07601E76085F9791003FEB33 /* UnicodeConversions.cpp */,
+ 014A2AA10B78FF1400A80B2A /* MD5.cpp */,
+ );
+ name = Utilities;
+ path = ../../source/XMPCore;
+ sourceTree = "<group>";
+ };
+ 07601E42085F94A2003FEB33 /* Toolkit Core */ = {
+ isa = PBXGroup;
+ children = (
+ 014796510B776899007CF8F4 /* XMPCore_Impl.cpp */,
+ 07601E46085F950A003FEB33 /* XMPIterator.cpp */,
+ 07601E47085F950A003FEB33 /* XMPMeta.cpp */,
+ DC87E517089960DB000A7ADF /* XMPMeta-GetSet.cpp */,
+ DC87E518089960DB000A7ADF /* XMPMeta-Parse.cpp */,
+ DC87E519089960DB000A7ADF /* XMPMeta-Serialize.cpp */,
+ 07601E48085F950A003FEB33 /* XMPUtils.cpp */,
+ DCEDFE2409ACBECF00D86460 /* XMPUtils-FileInfo.cpp */,
+ );
+ name = "Toolkit Core";
+ path = ../../source/XMPCore;
+ sourceTree = "<group>";
+ };
+ 0867D691FE84028FC02AAC07 /* AdobeXMP */ = {
+ isa = PBXGroup;
+ children = (
+ 07601E42085F94A2003FEB33 /* Toolkit Core */,
+ 014A2AB10B79001E00A80B2A /* Toolkit Files */,
+ 07601E40085F949B003FEB33 /* Utilities */,
+ DC14FDC2089A84F0004D5310 /* XML Parser */,
+ 07601E3C085F9484003FEB33 /* ABI Wrappers */,
+ 07601E3A085F947B003FEB33 /* Internal Headers */,
+ 07601E38085F9469003FEB33 /* Public Headers and Glue */,
+ 07601E35085F945B003FEB33 /* Build Extras */,
+ DC3CC41908A4342900F44C7B /* Products */,
+ );
+ name = AdobeXMP;
+ sourceTree = "<group>";
+ };
+ DC14FDC2089A84F0004D5310 /* XML Parser */ = {
+ isa = PBXGroup;
+ children = (
+ DC14FDD2089A8591004D5310 /* xmlparse.c */,
+ DC14FDD3089A8591004D5310 /* xmlrole.c */,
+ DC14FDD4089A8591004D5310 /* xmltok.c */,
+ );
+ name = "XML Parser";
+ path = "../../third-party/expat/lib";
+ sourceTree = "<group>";
+ };
+ DC3CC41908A4342900F44C7B /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ DC49326C089A9441003ADAAF /* libXMPCoreStaticDebug.a */,
+ DC4932B0089A9726003ADAAF /* libXMPCoreStaticRelease.a */,
+ 01FC6CEC0B7B6D65008559A1 /* libXMPFilesStaticDebug.a */,
+ 01FC6D0A0B7B7514008559A1 /* libXMPFilesStaticRelease.a */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 01FC6CD40B7B6D65008559A1 /* XMPFiles Debug */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 01FC6CEA0B7B6D65008559A1 /* Build configuration list for PBXNativeTarget "XMPFiles Debug" */;
+ buildPhases = (
+ 01FC6CD50B7B6D65008559A1 /* Sources */,
+ 01FC6CE90B7B6D65008559A1 /* Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = "XMPFiles Debug";
+ productName = "Debug-static";
+ productReference = 01FC6CEC0B7B6D65008559A1 /* libXMPFilesStaticDebug.a */;
+ productType = "com.apple.product-type.library.static";
+ };
+ 01FC6CF20B7B7514008559A1 /* XMPFiles Release */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 01FC6D080B7B7514008559A1 /* Build configuration list for PBXNativeTarget "XMPFiles Release" */;
+ buildPhases = (
+ 01FC6CF30B7B7514008559A1 /* Sources */,
+ 01FC6D070B7B7514008559A1 /* Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = "XMPFiles Release";
+ productName = "Debug-static";
+ productReference = 01FC6D0A0B7B7514008559A1 /* libXMPFilesStaticRelease.a */;
+ productType = "com.apple.product-type.library.static";
+ };
+ DC49326B089A9441003ADAAF /* XMPCore Debug */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = DC49326D089A9460003ADAAF /* Build configuration list for PBXNativeTarget "XMPCore Debug" */;
+ buildPhases = (
+ DC493269089A9441003ADAAF /* Sources */,
+ DC49326A089A9441003ADAAF /* Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = "XMPCore Debug";
+ productName = "Debug-static";
+ productReference = DC49326C089A9441003ADAAF /* libXMPCoreStaticDebug.a */;
+ productType = "com.apple.product-type.library.static";
+ };
+ DC493293089A9726003ADAAF /* XMPCore Release */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = DC4932AD089A9726003ADAAF /* Build configuration list for PBXNativeTarget "XMPCore Release" */;
+ buildPhases = (
+ DC493295089A9726003ADAAF /* Sources */,
+ DC4932AC089A9726003ADAAF /* Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = "XMPCore Release";
+ productName = "Debug-static";
+ productReference = DC4932B0089A9726003ADAAF /* libXMPCoreStaticRelease.a */;
+ productType = "com.apple.product-type.library.static";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 0867D690FE84028FC02AAC07 /* Project object */ = {
+ isa = PBXProject;
+ buildConfigurationList = 07601E2C085F9443003FEB33 /* Build configuration list for PBXProject "XMPToolkit" */;
+ hasScannedForEncodings = 1;
+ mainGroup = 0867D691FE84028FC02AAC07 /* AdobeXMP */;
+ productRefGroup = 0867D691FE84028FC02AAC07 /* AdobeXMP */;
+ projectDirPath = "";
+ targets = (
+ DCF912BC09A3E6970055523F /* Build All */,
+ DC49326B089A9441003ADAAF /* XMPCore Debug */,
+ DC493293089A9726003ADAAF /* XMPCore Release */,
+ 01FC6CD40B7B6D65008559A1 /* XMPFiles Debug */,
+ 01FC6CF20B7B7514008559A1 /* XMPFiles Release */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 01FC6CD50B7B6D65008559A1 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 01FC6CE80B7B6D65008559A1 /* WXMPFiles.cpp in Sources */,
+ 01FC6D3D0B7B7789008559A1 /* ID3_Support.cpp in Sources */,
+ 01FC6D3E0B7B7789008559A1 /* IPTC_Support.cpp in Sources */,
+ 01FC6D3F0B7B7789008559A1 /* PNG_Support.cpp in Sources */,
+ 01FC6D400B7B7789008559A1 /* PSIR_FileWriter.cpp in Sources */,
+ 01FC6D410B7B7789008559A1 /* PSIR_MemoryReader.cpp in Sources */,
+ 01FC6D420B7B7789008559A1 /* QuickTime_Support.cpp in Sources */,
+ 01FC6D430B7B7789008559A1 /* Reconcile_Impl.cpp in Sources */,
+ 01FC6D440B7B7789008559A1 /* ReconcileIPTC.cpp in Sources */,
+ 01FC6D450B7B7789008559A1 /* ReconcileLegacy.cpp in Sources */,
+ 01FC6D460B7B7789008559A1 /* ReconcileTIFF.cpp in Sources */,
+ 01FC6D470B7B7789008559A1 /* RIFF_Support.cpp in Sources */,
+ 01FC6D490B7B7789008559A1 /* TIFF_FileWriter.cpp in Sources */,
+ 01FC6D4A0B7B7789008559A1 /* TIFF_MemoryReader.cpp in Sources */,
+ 01FC6D4B0B7B7789008559A1 /* TIFF_Support.cpp in Sources */,
+ 01FC6D4C0B7B7789008559A1 /* XMPScanner.cpp in Sources */,
+ 01FC6D5F0B7B7799008559A1 /* AVI_Handler.cpp in Sources */,
+ 01FC6D600B7B7799008559A1 /* Basic_Handler.cpp in Sources */,
+ 01FC6D610B7B7799008559A1 /* InDesign_Handler.cpp in Sources */,
+ 01FC6D620B7B7799008559A1 /* JPEG_Handler.cpp in Sources */,
+ 01FC6D640B7B7799008559A1 /* MOV_Handler.cpp in Sources */,
+ 01FC6D650B7B7799008559A1 /* MP3_Handler.cpp in Sources */,
+ 01FC6D670B7B7799008559A1 /* MPEG_Handler.cpp in Sources */,
+ 01FC6D680B7B7799008559A1 /* PNG_Handler.cpp in Sources */,
+ 01FC6D690B7B7799008559A1 /* PostScript_Handler.cpp in Sources */,
+ 01FC6D6A0B7B7799008559A1 /* PSD_Handler.cpp in Sources */,
+ 01FC6D6B0B7B7799008559A1 /* Scanner_Handler.cpp in Sources */,
+ 01FC6D6D0B7B7799008559A1 /* TIFF_Handler.cpp in Sources */,
+ 01FC6D6E0B7B7799008559A1 /* Trivial_Handler.cpp in Sources */,
+ 01FC6D6F0B7B7799008559A1 /* WAV_Handler.cpp in Sources */,
+ 01FC6D870B7B77D9008559A1 /* WXMPFiles.cpp in Sources */,
+ 01FC6D880B7B77D9008559A1 /* XMPFiles.cpp in Sources */,
+ 01FC6D890B7B77D9008559A1 /* XMPFiles_Impl.cpp in Sources */,
+ 0102D1C70B7B8471001AF6F7 /* MD5.cpp in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 01FC6CF30B7B7514008559A1 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 01FC6D060B7B7514008559A1 /* WXMPFiles.cpp in Sources */,
+ 01FC6D4E0B7B778A008559A1 /* ID3_Support.cpp in Sources */,
+ 01FC6D4F0B7B778A008559A1 /* IPTC_Support.cpp in Sources */,
+ 01FC6D500B7B778A008559A1 /* PNG_Support.cpp in Sources */,
+ 01FC6D510B7B778A008559A1 /* PSIR_FileWriter.cpp in Sources */,
+ 01FC6D520B7B778A008559A1 /* PSIR_MemoryReader.cpp in Sources */,
+ 01FC6D530B7B778A008559A1 /* QuickTime_Support.cpp in Sources */,
+ 01FC6D540B7B778A008559A1 /* Reconcile_Impl.cpp in Sources */,
+ 01FC6D550B7B778A008559A1 /* ReconcileIPTC.cpp in Sources */,
+ 01FC6D560B7B778A008559A1 /* ReconcileLegacy.cpp in Sources */,
+ 01FC6D570B7B778A008559A1 /* ReconcileTIFF.cpp in Sources */,
+ 01FC6D580B7B778A008559A1 /* RIFF_Support.cpp in Sources */,
+ 01FC6D5A0B7B778A008559A1 /* TIFF_FileWriter.cpp in Sources */,
+ 01FC6D5B0B7B778A008559A1 /* TIFF_MemoryReader.cpp in Sources */,
+ 01FC6D5C0B7B778A008559A1 /* TIFF_Support.cpp in Sources */,
+ 01FC6D5D0B7B778A008559A1 /* XMPScanner.cpp in Sources */,
+ 01FC6D710B7B779A008559A1 /* AVI_Handler.cpp in Sources */,
+ 01FC6D720B7B779A008559A1 /* Basic_Handler.cpp in Sources */,
+ 01FC6D730B7B779A008559A1 /* InDesign_Handler.cpp in Sources */,
+ 01FC6D740B7B779A008559A1 /* JPEG_Handler.cpp in Sources */,
+ 01FC6D760B7B779A008559A1 /* MOV_Handler.cpp in Sources */,
+ 01FC6D770B7B779A008559A1 /* MP3_Handler.cpp in Sources */,
+ 01FC6D790B7B779A008559A1 /* MPEG_Handler.cpp in Sources */,
+ 01FC6D7A0B7B779A008559A1 /* PNG_Handler.cpp in Sources */,
+ 01FC6D7B0B7B779A008559A1 /* PostScript_Handler.cpp in Sources */,
+ 01FC6D7C0B7B779A008559A1 /* PSD_Handler.cpp in Sources */,
+ 01FC6D7D0B7B779A008559A1 /* Scanner_Handler.cpp in Sources */,
+ 01FC6D7F0B7B779A008559A1 /* TIFF_Handler.cpp in Sources */,
+ 01FC6D800B7B779A008559A1 /* Trivial_Handler.cpp in Sources */,
+ 01FC6D810B7B779A008559A1 /* WAV_Handler.cpp in Sources */,
+ 01FC6D8A0B7B77DA008559A1 /* WXMPFiles.cpp in Sources */,
+ 01FC6D8B0B7B77DA008559A1 /* XMPFiles.cpp in Sources */,
+ 01FC6D8C0B7B77DA008559A1 /* XMPFiles_Impl.cpp in Sources */,
+ 0102D1C80B7B8472001AF6F7 /* MD5.cpp in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ DC493269089A9441003ADAAF /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ DC493270089A94CE003ADAAF /* XMPIterator.cpp in Sources */,
+ DC493271089A94CE003ADAAF /* XMPMeta.cpp in Sources */,
+ DC493272089A94CE003ADAAF /* XMPMeta-GetSet.cpp in Sources */,
+ DC493273089A94CE003ADAAF /* XMPMeta-Parse.cpp in Sources */,
+ DC493274089A94CE003ADAAF /* XMPMeta-Serialize.cpp in Sources */,
+ DC493275089A94CE003ADAAF /* XMPUtils.cpp in Sources */,
+ DC49327B089A94E6003ADAAF /* ExpatAdapter.cpp in Sources */,
+ DC49327D089A94E6003ADAAF /* ParseRDF.cpp in Sources */,
+ DC49327E089A94E6003ADAAF /* UnicodeConversions.cpp in Sources */,
+ DC49327F089A94FF003ADAAF /* xmlparse.c in Sources */,
+ DC493280089A94FF003ADAAF /* xmlrole.c in Sources */,
+ DC493281089A94FF003ADAAF /* xmltok.c in Sources */,
+ DC493282089A950C003ADAAF /* WXMPIterator.cpp in Sources */,
+ DC493283089A950C003ADAAF /* WXMPMeta.cpp in Sources */,
+ DC493284089A950C003ADAAF /* WXMPUtils.cpp in Sources */,
+ DCEDFE2509ACBECF00D86460 /* XMPUtils-FileInfo.cpp in Sources */,
+ 014796520B776899007CF8F4 /* XMPCore_Impl.cpp in Sources */,
+ 014A2AA20B78FF2C00A80B2A /* MD5.cpp in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ DC493295089A9726003ADAAF /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ DC493297089A9726003ADAAF /* XMPIterator.cpp in Sources */,
+ DC493298089A9726003ADAAF /* XMPMeta.cpp in Sources */,
+ DC493299089A9726003ADAAF /* XMPMeta-GetSet.cpp in Sources */,
+ DC49329A089A9726003ADAAF /* XMPMeta-Parse.cpp in Sources */,
+ DC49329B089A9726003ADAAF /* XMPMeta-Serialize.cpp in Sources */,
+ DC49329C089A9726003ADAAF /* XMPUtils.cpp in Sources */,
+ DC4932A2089A9726003ADAAF /* ExpatAdapter.cpp in Sources */,
+ DC4932A4089A9726003ADAAF /* ParseRDF.cpp in Sources */,
+ DC4932A5089A9726003ADAAF /* UnicodeConversions.cpp in Sources */,
+ DC4932A6089A9726003ADAAF /* xmlparse.c in Sources */,
+ DC4932A7089A9726003ADAAF /* xmlrole.c in Sources */,
+ DC4932A8089A9726003ADAAF /* xmltok.c in Sources */,
+ DC4932A9089A9726003ADAAF /* WXMPIterator.cpp in Sources */,
+ DC4932AA089A9726003ADAAF /* WXMPMeta.cpp in Sources */,
+ DC4932AB089A9726003ADAAF /* WXMPUtils.cpp in Sources */,
+ DCEDFE2609ACBECF00D86460 /* XMPUtils-FileInfo.cpp in Sources */,
+ 014796530B776899007CF8F4 /* XMPCore_Impl.cpp in Sources */,
+ 014A2AA30B78FF2C00A80B2A /* MD5.cpp in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+ 01FC6D900B7B7858008559A1 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 01FC6CF20B7B7514008559A1 /* XMPFiles Release */;
+ targetProxy = 01FC6D8F0B7B7858008559A1 /* PBXContainerItemProxy */;
+ };
+ 01FC6D920B7B7858008559A1 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 01FC6CD40B7B6D65008559A1 /* XMPFiles Debug */;
+ targetProxy = 01FC6D910B7B7858008559A1 /* PBXContainerItemProxy */;
+ };
+ DCF912BE09A3E6A40055523F /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = DC49326B089A9441003ADAAF /* XMPCore Debug */;
+ targetProxy = DCF912BD09A3E6A40055523F /* PBXContainerItemProxy */;
+ };
+ DCF912C009A3E6A70055523F /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = DC493293089A9726003ADAAF /* XMPCore Release */;
+ targetProxy = DCF912BF09A3E6A70055523F /* PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
+/* Begin XCBuildConfiguration section */
+ 01FC6CEB0B7B6D65008559A1 /* Default */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = DCE400F80951DAA90040D71F /* XMPToolkit-Debug.xcconfig */;
+ buildSettings = {
+ PRODUCT_NAME = XMPFilesStaticDebug;
+ };
+ name = Default;
+ };
+ 01FC6D090B7B7514008559A1 /* Default */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = DCE400F90951DAA90040D71F /* XMPToolkit-Release.xcconfig */;
+ buildSettings = {
+ PRODUCT_NAME = XMPFilesStaticRelease;
+ };
+ name = Default;
+ };
+ 07A256240868DD5F00CA045D /* Default */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = DCE400F70951DAA90040D71F /* XMPToolkit-Common.xcconfig */;
+ buildSettings = {
+ };
+ name = Default;
+ };
+ DC49326E089A9460003ADAAF /* Default */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = DCE400F80951DAA90040D71F /* XMPToolkit-Debug.xcconfig */;
+ buildSettings = {
+ PRODUCT_NAME = XMPCoreStaticDebug;
+ };
+ name = Default;
+ };
+ DC4932AE089A9726003ADAAF /* Default */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = DCE400F90951DAA90040D71F /* XMPToolkit-Release.xcconfig */;
+ buildSettings = {
+ PRODUCT_NAME = XMPCoreStaticRelease;
+ };
+ name = Default;
+ };
+ DCF912C209A3E6C60055523F /* Default */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ PRODUCT_NAME = "Build All";
+ };
+ name = Default;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 01FC6CEA0B7B6D65008559A1 /* Build configuration list for PBXNativeTarget "XMPFiles Debug" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 01FC6CEB0B7B6D65008559A1 /* Default */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Default;
+ };
+ 01FC6D080B7B7514008559A1 /* Build configuration list for PBXNativeTarget "XMPFiles Release" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 01FC6D090B7B7514008559A1 /* Default */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Default;
+ };
+ 07601E2C085F9443003FEB33 /* Build configuration list for PBXProject "XMPToolkit" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 07A256240868DD5F00CA045D /* Default */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Default;
+ };
+ DC49326D089A9460003ADAAF /* Build configuration list for PBXNativeTarget "XMPCore Debug" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ DC49326E089A9460003ADAAF /* Default */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Default;
+ };
+ DC4932AD089A9726003ADAAF /* Build configuration list for PBXNativeTarget "XMPCore Release" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ DC4932AE089A9726003ADAAF /* Default */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Default;
+ };
+ DCF912C109A3E6C60055523F /* Build configuration list for PBXAggregateTarget "Build All" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ DCF912C209A3E6C60055523F /* Default */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Default;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 0867D690FE84028FC02AAC07 /* Project object */;
+}
diff --git a/build/xcode/expat_config.h b/build/xcode/expat_config.h
new file mode 100644
index 0000000..a21de6e
--- /dev/null
+++ b/build/xcode/expat_config.h
@@ -0,0 +1,107 @@
+/* expat_config.h. Generated by configure. */
+/* expat_config.h.in. Generated from configure.in by autoheader. */
+
+/* *** Tweaked by hand for 32 bit Xcode builds on PowerPC and x86 */
+
+#if __BIG_ENDIAN__
+
+ /* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */
+ #define BYTEORDER 4321
+
+ /* whether byteorder is bigendian */
+ #define WORDS_BIGENDIAN 1
+
+#else
+
+ /* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */
+ #define BYTEORDER 1234
+
+ /* whether byteorder is bigendian */
+ /* #define WORDS_BIGENDIAN 1 */
+
+#endif
+
+/* Define to 1 if you have the `bcopy' function. */
+#define HAVE_BCOPY 1
+
+/* Define to 1 if you have the <check.h> header file. */
+/* #undef HAVE_CHECK_H */
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define to 1 if you have the `getpagesize' function. */
+#define HAVE_GETPAGESIZE 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the `memmove' function. */
+#define HAVE_MEMMOVE 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have a working `mmap' system call. */
+#define HAVE_MMAP 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "expat-bugs@mail.libexpat.org"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "expat"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "expat 1.95.8"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "expat"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "1.95.8"
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define to specify how much context to retain around the current parse
+ point. */
+#define XML_CONTEXT_BYTES 1024
+
+/* Define to make parameter entity parsing functionality available. */
+/* #define XML_DTD 1 */
+
+/* Define to make XML Namespaces functionality available. */
+#define XML_NS 1
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
+
+/* Define to `long' if <sys/types.h> does not define. */
+/* #undef off_t */
+
+/* Define to `unsigned' if <sys/types.h> does not define. */
+/* #undef size_t */
diff --git a/docs/BSD-License.txt b/docs/BSD-License.txt
new file mode 100644
index 0000000..e413f87
--- /dev/null
+++ b/docs/BSD-License.txt
@@ -0,0 +1,25 @@
+The BSD License
+
+Copyright (c) 1999 - 2007, Adobe Systems Incorporated
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+* Neither the name of Adobe Systems Incorporated, nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
diff --git a/docs/XMP-SDK-Overview.pdf b/docs/XMP-SDK-Overview.pdf
new file mode 100644
index 0000000..9ad8b6d
--- /dev/null
+++ b/docs/XMP-SDK-Overview.pdf
Binary files differ
diff --git a/docs/XMP-Specification.pdf b/docs/XMP-Specification.pdf
new file mode 100644
index 0000000..c66f122
--- /dev/null
+++ b/docs/XMP-Specification.pdf
Binary files differ
diff --git a/docs/XMPToolkit/TXMPFiles_8hpp-source.html b/docs/XMPToolkit/TXMPFiles_8hpp-source.html
new file mode 100644
index 0000000..aa8571e
--- /dev/null
+++ b/docs/XMPToolkit/TXMPFiles_8hpp-source.html
@@ -0,0 +1,162 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Adobe XMP Toolkit: TXMPFiles.hpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.1 -->
+<div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li id="current"><a href="files.html"><span>Files</span></a></li>
+ </ul></div>
+<h1>TXMPFiles.hpp</h1><a href="TXMPFiles_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef __TXMPFiles_hpp__</span>
+<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define __TXMPFiles_hpp__ 1</span>
+<a name="l00003"></a>00003 <span class="preprocessor"></span>
+<a name="l00004"></a>00004 <span class="preprocessor">#if ( ! __XMP_hpp__ )</span>
+<a name="l00005"></a>00005 <span class="preprocessor"></span><span class="preprocessor"> #error "Do not directly include, use XMP.hpp"</span>
+<a name="l00006"></a>00006 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00007"></a>00007 <span class="preprocessor"></span>
+<a name="l00008"></a>00008 <span class="comment">// =================================================================================================</span>
+<a name="l00009"></a>00009 <span class="comment">// ADOBE SYSTEMS INCORPORATED</span>
+<a name="l00010"></a>00010 <span class="comment">// Copyright 2002-2007 Adobe Systems Incorporated</span>
+<a name="l00011"></a>00011 <span class="comment">// All Rights Reserved</span>
+<a name="l00012"></a>00012 <span class="comment">//</span>
+<a name="l00013"></a>00013 <span class="comment">// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms</span>
+<a name="l00014"></a>00014 <span class="comment">// of the Adobe license agreement accompanying it.</span>
+<a name="l00015"></a>00015 <span class="comment">// =================================================================================================</span>
+<a name="l00016"></a>00016
+<a name="l00017"></a>00017 <span class="comment">// ================================================================================================</span>
+<a name="l00033"></a>00033 <span class="comment"></span><span class="comment">// ================================================================================================</span>
+<a name="l00034"></a>00034
+<a name="l00035"></a>00035 <span class="comment">// ================================================================================================</span>
+<a name="l00060"></a>00060 <span class="comment"></span><span class="comment">// ================================================================================================</span>
+<a name="l00061"></a>00061
+<a name="l00062"></a>00062 <span class="keyword">template</span> &lt;<span class="keyword">class</span> tStringObj&gt;
+<a name="l00063"></a><a class="code" href="classTXMPFiles.html">00063</a> <span class="keyword">class </span><a class="code" href="classTXMPFiles.html">TXMPFiles</a> {
+<a name="l00064"></a>00064
+<a name="l00065"></a>00065 <span class="keyword">public</span>:
+<a name="l00066"></a>00066
+<a name="l00067"></a>00067 <span class="comment">// ============================================================================================</span>
+<a name="l00071"></a>00071 <span class="comment"></span>
+<a name="l00072"></a>00072 <span class="keyword">static</span> <span class="keywordtype">void</span> GetVersionInfo ( XMP_VersionInfo * versionInfo );
+<a name="l00073"></a>00073
+<a name="l00076"></a>00076
+<a name="l00077"></a>00077 <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classTXMPFiles.html#0874bbbf41c9490abfb613bfe297327d">Initialize</a>();
+<a name="l00078"></a>00078 <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classTXMPFiles.html#0874bbbf41c9490abfb613bfe297327d">Initialize</a> ( <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options );
+<a name="l00079"></a>00079
+<a name="l00082"></a>00082
+<a name="l00083"></a>00083 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classTXMPFiles.html#1e8de80c252b60b332dc4bc524139fd8">Terminate</a>();
+<a name="l00084"></a>00084
+<a name="l00086"></a>00086
+<a name="l00087"></a>00087 <span class="comment">// ============================================================================================</span>
+<a name="l00092"></a>00092 <span class="comment"></span>
+<a name="l00094"></a>00094
+<a name="l00095"></a>00095 <a class="code" href="classTXMPFiles.html#14f01e38454178578fd25fff6024fd54">TXMPFiles</a>();
+<a name="l00096"></a>00096 <span class="keyword">virtual</span> ~<a class="code" href="classTXMPFiles.html">TXMPFiles</a>() <span class="keywordflow">throw</span>();
+<a name="l00097"></a>00097
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101 <a class="code" href="classTXMPFiles.html#14f01e38454178578fd25fff6024fd54">TXMPFiles</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> filePath,
+<a name="l00102"></a>00102 XMP_FileFormat format = kXMP_UnknownFile,
+<a name="l00103"></a>00103 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> openFlags = 0 );
+<a name="l00104"></a>00104
+<a name="l00105"></a>00105 <a class="code" href="classTXMPFiles.html#14f01e38454178578fd25fff6024fd54">TXMPFiles</a> ( <span class="keyword">const</span> tStringObj &amp; filePath,
+<a name="l00106"></a>00106 XMP_FileFormat format = kXMP_UnknownFile,
+<a name="l00107"></a>00107 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> openFlags = 0 );
+<a name="l00108"></a>00108
+<a name="l00111"></a>00111
+<a name="l00112"></a>00112 <a class="code" href="classTXMPFiles.html#14f01e38454178578fd25fff6024fd54">TXMPFiles</a> ( <span class="keyword">const</span> <a class="code" href="classTXMPFiles.html">TXMPFiles&lt;tStringObj&gt;</a> &amp; original );
+<a name="l00113"></a>00113
+<a name="l00114"></a>00114 <span class="keywordtype">void</span> operator= ( <span class="keyword">const</span> <a class="code" href="classTXMPFiles.html">TXMPFiles&lt;tStringObj&gt;</a> &amp; rhs );
+<a name="l00115"></a>00115
+<a name="l00119"></a>00119
+<a name="l00120"></a>00120 <a class="code" href="classTXMPFiles.html#14f01e38454178578fd25fff6024fd54">TXMPFiles</a> ( XMPFilesRef xmpFilesObj );
+<a name="l00121"></a>00121
+<a name="l00122"></a>00122 XMPFilesRef GetInternalRef();
+<a name="l00123"></a>00123
+<a name="l00125"></a>00125
+<a name="l00126"></a>00126 <span class="comment">// ============================================================================================</span>
+<a name="l00129"></a>00129 <span class="comment"></span>
+<a name="l00130"></a>00130 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00158"></a>00158 <span class="comment"></span>
+<a name="l00159"></a>00159 <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classTXMPFiles.html#6ac78e3c7286ca8dcb41eaa007aa00e8">GetFormatInfo</a> ( XMP_FileFormat format,
+<a name="l00160"></a>00160 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> * handlerFlags = 0 );
+<a name="l00161"></a>00161
+<a name="l00163"></a>00163
+<a name="l00164"></a>00164 <span class="comment">// ============================================================================================</span>
+<a name="l00167"></a>00167 <span class="comment"></span>
+<a name="l00168"></a>00168 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00223"></a>00223 <span class="comment"></span>
+<a name="l00224"></a>00224 <span class="keywordtype">bool</span> <a class="code" href="classTXMPFiles.html#fcd21cfe5d6f13c648c5541e161919cb">OpenFile</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> filePath,
+<a name="l00225"></a>00225 XMP_FileFormat format = kXMP_UnknownFile,
+<a name="l00226"></a>00226 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> openFlags = 0 );
+<a name="l00227"></a>00227
+<a name="l00228"></a>00228 <span class="keywordtype">bool</span> <a class="code" href="classTXMPFiles.html#fcd21cfe5d6f13c648c5541e161919cb">OpenFile</a> ( <span class="keyword">const</span> tStringObj &amp; filePath,
+<a name="l00229"></a>00229 XMP_FileFormat format = kXMP_UnknownFile,
+<a name="l00230"></a>00230 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> openFlags = 0 );
+<a name="l00231"></a>00231
+<a name="l00232"></a>00232 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00243"></a>00243 <span class="comment"></span>
+<a name="l00244"></a>00244 <span class="keywordtype">void</span> <a class="code" href="classTXMPFiles.html#eca89170c7aa3e2d56e30bff04dd7927">CloseFile</a> ( <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> closeFlags = 0 );
+<a name="l00245"></a>00245
+<a name="l00246"></a>00246 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00260"></a>00260 <span class="comment"></span>
+<a name="l00261"></a>00261 <span class="keywordtype">bool</span> <a class="code" href="classTXMPFiles.html#f9931d081cb19f98c81e41786030765b">GetFileInfo</a> ( tStringObj * filePath = 0,
+<a name="l00262"></a>00262 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> * openFlags = 0,
+<a name="l00263"></a>00263 XMP_FileFormat * format = 0,
+<a name="l00264"></a>00264 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> * handlerFlags = 0 );
+<a name="l00265"></a>00265
+<a name="l00266"></a>00266 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00274"></a>00274 <span class="comment"></span>
+<a name="l00275"></a>00275 <span class="keywordtype">void</span> <a class="code" href="classTXMPFiles.html#7b86c130fdbd54b5ac158ec3fee93777">SetAbortProc</a> ( XMP_AbortProc abortProc,
+<a name="l00276"></a>00276 <span class="keywordtype">void</span> * abortArg );
+<a name="l00277"></a>00277
+<a name="l00279"></a>00279
+<a name="l00280"></a>00280 <span class="comment">// ============================================================================================</span>
+<a name="l00283"></a>00283 <span class="comment"></span>
+<a name="l00284"></a>00284 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00313"></a>00313 <span class="comment"></span>
+<a name="l00314"></a>00314 <span class="keywordtype">bool</span> <a class="code" href="classTXMPFiles.html#42ca0bbc5ac66a8de1710e03a7ff17b3">GetXMP</a> ( SXMPMeta * xmpObj = 0,
+<a name="l00315"></a>00315 tStringObj * xmpPacket = 0,
+<a name="l00316"></a>00316 XMP_PacketInfo * packetInfo = 0 );
+<a name="l00317"></a>00317
+<a name="l00318"></a>00318 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00347"></a>00347 <span class="comment"></span>
+<a name="l00348"></a>00348 <span class="keywordtype">bool</span> <a class="code" href="classTXMPFiles.html#4ea1eda39f803322e10b2a554ef8ab06">GetThumbnail</a> ( XMP_ThumbnailInfo * tnailInfo );
+<a name="l00349"></a>00349
+<a name="l00350"></a>00350 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00357"></a>00357 <span class="comment"></span>
+<a name="l00358"></a>00358 <span class="keywordtype">void</span> <a class="code" href="classTXMPFiles.html#d3f7babdc07c7de0d0cd9a3362b4710a">PutXMP</a> ( <span class="keyword">const</span> SXMPMeta &amp; xmpObj );
+<a name="l00359"></a>00359
+<a name="l00360"></a>00360 <span class="keywordtype">void</span> <a class="code" href="classTXMPFiles.html#d3f7babdc07c7de0d0cd9a3362b4710a">PutXMP</a> ( <span class="keyword">const</span> tStringObj &amp; xmpPacket );
+<a name="l00361"></a>00361
+<a name="l00362"></a>00362 <span class="keywordtype">void</span> <a class="code" href="classTXMPFiles.html#d3f7babdc07c7de0d0cd9a3362b4710a">PutXMP</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> xmpPacket,
+<a name="l00363"></a>00363 <a class="code" href="XMP__Const_8h.html#9f7dcc184f901c713274edfdac5bcc9a">XMP_StringLen</a> xmpLength = kXMP_UseNullTermination );
+<a name="l00364"></a>00364
+<a name="l00365"></a>00365 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00399"></a>00399 <span class="comment"></span>
+<a name="l00400"></a>00400 <span class="keywordtype">bool</span> <a class="code" href="classTXMPFiles.html#29a11a1539d6300da3fb4c7e9ea02bb6">CanPutXMP</a> ( <span class="keyword">const</span> SXMPMeta &amp; xmpObj );
+<a name="l00401"></a>00401
+<a name="l00402"></a>00402 <span class="keywordtype">bool</span> <a class="code" href="classTXMPFiles.html#29a11a1539d6300da3fb4c7e9ea02bb6">CanPutXMP</a> ( <span class="keyword">const</span> tStringObj &amp; xmpPacket );
+<a name="l00403"></a>00403
+<a name="l00404"></a>00404 <span class="keywordtype">bool</span> <a class="code" href="classTXMPFiles.html#29a11a1539d6300da3fb4c7e9ea02bb6">CanPutXMP</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> xmpPacket,
+<a name="l00405"></a>00405 <a class="code" href="XMP__Const_8h.html#9f7dcc184f901c713274edfdac5bcc9a">XMP_StringLen</a> xmpLength = kXMP_UseNullTermination );
+<a name="l00406"></a>00406
+<a name="l00408"></a>00408
+<a name="l00409"></a>00409 <span class="comment">// =============================================================================================</span>
+<a name="l00410"></a>00410
+<a name="l00411"></a>00411 <span class="keyword">private</span>:
+<a name="l00412"></a>00412 XMPFilesRef xmpFilesRef;
+<a name="l00413"></a>00413
+<a name="l00414"></a>00414 }; <span class="comment">// class TXMPFiles</span>
+<a name="l00415"></a>00415
+<a name="l00416"></a>00416 <span class="comment">// =================================================================================================</span>
+<a name="l00417"></a>00417
+<a name="l00418"></a>00418 <span class="preprocessor">#endif // __TXMPFiles_hpp__</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu May 3 14:54:57 2007 for Adobe XMP Toolkit by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address>
+</body>
+</html>
diff --git a/docs/XMPToolkit/TXMPFiles_8hpp.html b/docs/XMPToolkit/TXMPFiles_8hpp.html
new file mode 100644
index 0000000..48e78dc
--- /dev/null
+++ b/docs/XMPToolkit/TXMPFiles_8hpp.html
@@ -0,0 +1,34 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Adobe XMP Toolkit: TXMPFiles.hpp File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.1 -->
+<div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li id="current"><a href="files.html"><span>Files</span></a></li>
+ </ul></div>
+<h1>TXMPFiles.hpp File Reference</h1>API for access to the "main" metadata in a file. <a href="#_details">More...</a>
+<p>
+
+<p>
+<a href="TXMPFiles_8hpp-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html">TXMPFiles&lt; tStringObj &gt;</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">API for access to the "main" metadata in a file. <a href="classTXMPFiles.html#_details">More...</a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+API for access to the "main" metadata in a file.
+<p>
+<code><a class="el" href="classTXMPFiles.html">TXMPFiles</a></code> provides the API for the Adobe XMP Toolkit's File Handler component. This provides convenient access to the main, or document level, XMP for a file. The File Handler supports file I/O, the XMP Toolkit Core supports manipulation of the XMP properties. The File Handler is intended to eventually have smart, efficient support for all file formats for which the means to embed XMP is defined in the XMP Specification. Where possible this support will allow injection of XMP where none currently exists, expansion of XMP without regard to existing padding, and reconciliation of the XMP and other legacy forms of metadata.<p>
+<code><a class="el" href="classTXMPFiles.html">TXMPFiles</a></code> is designed for use by clients interested in the metadata and not in the primary file content. The Adobe Bridge application is a typical example. <code><a class="el" href="classTXMPFiles.html">TXMPFiles</a></code> is not intended to be particulary appropriate for files authored by an application. I.e. those files for which the application has explicit knowledge of the file format. <hr size="1"><address style="align: right;"><small>Generated on Thu May 3 14:54:57 2007 for Adobe XMP Toolkit by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address>
+</body>
+</html>
diff --git a/docs/XMPToolkit/TXMPFiles_8incl__cpp.html b/docs/XMPToolkit/TXMPFiles_8incl__cpp.html
new file mode 100644
index 0000000..146d09b
--- /dev/null
+++ b/docs/XMPToolkit/TXMPFiles_8incl__cpp.html
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Adobe XMP Toolkit: TXMPFiles.incl_cpp File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.1 -->
+<div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li id="current"><a href="files.html"><span>Files</span></a></li>
+ </ul></div>
+<h1>TXMPFiles.incl_cpp File Reference</h1>The implementation of the <a class="el" href="classTXMPFiles.html">TXMPFiles</a> template class. <a href="#_details">More...</a>
+<p>
+<code>#include &quot;client-glue/WXMP_Common.hpp&quot;</code><br>
+<code>#include &quot;client-glue/WXMPFiles.hpp&quot;</code><br>
+
+<p>
+Include dependency graph for TXMPFiles.incl_cpp:<p><center><img src="TXMPFiles_8incl__cpp__incl.png" border="0" usemap="#TXMPFiles.incl_cpp_map" alt=""></center>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The implementation of the <a class="el" href="classTXMPFiles.html">TXMPFiles</a> template class.
+<p>
+<hr size="1"><address style="align: right;"><small>Generated on Thu May 3 14:54:57 2007 for Adobe XMP Toolkit by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address>
+</body>
+</html>
diff --git a/docs/XMPToolkit/TXMPFiles_8incl__cpp__incl.png b/docs/XMPToolkit/TXMPFiles_8incl__cpp__incl.png
new file mode 100644
index 0000000..704bd4f
--- /dev/null
+++ b/docs/XMPToolkit/TXMPFiles_8incl__cpp__incl.png
Binary files differ
diff --git a/docs/XMPToolkit/TXMPIterator_8hpp-source.html b/docs/XMPToolkit/TXMPIterator_8hpp-source.html
new file mode 100644
index 0000000..8ef6239
--- /dev/null
+++ b/docs/XMPToolkit/TXMPIterator_8hpp-source.html
@@ -0,0 +1,104 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Adobe XMP Toolkit: TXMPIterator.hpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.1 -->
+<div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li id="current"><a href="files.html"><span>Files</span></a></li>
+ </ul></div>
+<h1>TXMPIterator.hpp</h1><a href="TXMPIterator_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef __TXMPIterator_hpp__</span>
+<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define __TXMPIterator_hpp__ 1</span>
+<a name="l00003"></a>00003 <span class="preprocessor"></span>
+<a name="l00004"></a>00004 <span class="preprocessor">#if ( ! __XMP_hpp__ )</span>
+<a name="l00005"></a>00005 <span class="preprocessor"></span><span class="preprocessor"> #error "Do not directly include, use XMP.hpp"</span>
+<a name="l00006"></a>00006 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00007"></a>00007 <span class="preprocessor"></span>
+<a name="l00008"></a>00008 <span class="comment">// =================================================================================================</span>
+<a name="l00009"></a>00009 <span class="comment">// ADOBE SYSTEMS INCORPORATED</span>
+<a name="l00010"></a>00010 <span class="comment">// Copyright 2002-2007 Adobe Systems Incorporated</span>
+<a name="l00011"></a>00011 <span class="comment">// All Rights Reserved</span>
+<a name="l00012"></a>00012 <span class="comment">//</span>
+<a name="l00013"></a>00013 <span class="comment">// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms</span>
+<a name="l00014"></a>00014 <span class="comment">// of the Adobe license agreement accompanying it.</span>
+<a name="l00015"></a>00015 <span class="comment">// =================================================================================================</span>
+<a name="l00016"></a>00016
+<a name="l00017"></a>00017 <span class="comment">// ================================================================================================</span>
+<a name="l00024"></a>00024 <span class="comment"></span><span class="comment">// ================================================================================================</span>
+<a name="l00025"></a>00025
+<a name="l00026"></a>00026 <span class="comment">// ================================================================================================</span>
+<a name="l00084"></a>00084 <span class="comment"></span><span class="comment">// ================================================================================================</span>
+<a name="l00085"></a>00085
+<a name="l00086"></a>00086 <span class="preprocessor">#include "client-glue/WXMPIterator.hpp"</span>
+<a name="l00087"></a>00087
+<a name="l00088"></a>00088 <span class="keyword">template</span> &lt;<span class="keyword">class</span> tStringObj&gt;
+<a name="l00089"></a><a class="code" href="classTXMPIterator.html">00089</a> <span class="keyword">class </span><a class="code" href="classTXMPIterator.html">TXMPIterator</a> {
+<a name="l00090"></a>00090
+<a name="l00091"></a>00091 <span class="keyword">public</span>:
+<a name="l00092"></a>00092
+<a name="l00093"></a>00093 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00098"></a>00098 <span class="comment"></span>
+<a name="l00099"></a>00099 <span class="keywordtype">void</span> <a class="code" href="classTXMPIterator.html#d767d731320d3f4c997c6ce9f7f8fa63">operator= </a>( <span class="keyword">const</span> <a class="code" href="classTXMPIterator.html">TXMPIterator&lt;tStringObj&gt;</a> &amp; rhs );
+<a name="l00100"></a>00100
+<a name="l00101"></a>00101 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00105"></a>00105 <span class="comment"></span>
+<a name="l00106"></a>00106 <a class="code" href="classTXMPIterator.html">TXMPIterator</a> ( <span class="keyword">const</span> <a class="code" href="classTXMPIterator.html">TXMPIterator&lt;tStringObj&gt;</a> &amp; original );
+<a name="l00107"></a>00107
+<a name="l00108"></a>00108 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00132"></a>00132 <span class="comment"></span>
+<a name="l00133"></a>00133 <a class="code" href="classTXMPIterator.html">TXMPIterator</a> ( <span class="keyword">const</span> <a class="code" href="classTXMPMeta.html">TXMPMeta&lt;tStringObj&gt;</a> &amp; xmpObj,
+<a name="l00134"></a>00134 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l00135"></a>00135 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName,
+<a name="l00136"></a>00136 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options = 0 );
+<a name="l00137"></a>00137
+<a name="l00138"></a>00138 <a class="code" href="classTXMPIterator.html">TXMPIterator</a> ( <span class="keyword">const</span> <a class="code" href="classTXMPMeta.html">TXMPMeta&lt;tStringObj&gt;</a> &amp; xmpObj,
+<a name="l00139"></a>00139 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l00140"></a>00140 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options = 0 );
+<a name="l00141"></a>00141
+<a name="l00142"></a>00142 <a class="code" href="classTXMPIterator.html">TXMPIterator</a> ( <span class="keyword">const</span> <a class="code" href="classTXMPMeta.html">TXMPMeta&lt;tStringObj&gt;</a> &amp; xmpObj,
+<a name="l00143"></a>00143 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options = 0 );
+<a name="l00144"></a>00144
+<a name="l00145"></a>00145 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00149"></a>00149 <span class="comment"></span>
+<a name="l00150"></a>00150 <a class="code" href="classTXMPIterator.html">TXMPIterator</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l00151"></a>00151 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName,
+<a name="l00152"></a>00152 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options );
+<a name="l00153"></a>00153
+<a name="l00154"></a>00154 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00156"></a>00156 <span class="comment"></span>
+<a name="l00157"></a>00157 <span class="keyword">virtual</span> <a class="code" href="classTXMPIterator.html#911554533e8a3f09ab8870bd54462196">~TXMPIterator</a>() <span class="keywordflow">throw</span>();
+<a name="l00158"></a>00158
+<a name="l00159"></a>00159 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00175"></a>00175 <span class="comment"></span>
+<a name="l00176"></a>00176 <span class="keywordtype">bool</span>
+<a name="l00177"></a>00177 <a class="code" href="classTXMPIterator.html#124a1dd1ab3ff0d236e4d4b967dafcd9">Next</a> ( tStringObj * schemaNS = 0,
+<a name="l00178"></a>00178 tStringObj * propPath = 0,
+<a name="l00179"></a>00179 tStringObj * propValue = 0,
+<a name="l00180"></a>00180 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> * options = 0 );
+<a name="l00181"></a>00181
+<a name="l00182"></a>00182 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00191"></a>00191 <span class="comment"></span>
+<a name="l00192"></a>00192 <span class="keywordtype">void</span>
+<a name="l00193"></a>00193 <a class="code" href="classTXMPIterator.html#30b4d78974b347e4fcd275f1f65a61b2">Skip</a> ( <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options );
+<a name="l00194"></a>00194
+<a name="l00195"></a>00195 <span class="keyword">private</span>:
+<a name="l00196"></a>00196
+<a name="l00197"></a>00197 XMPIteratorRef iterRef;
+<a name="l00198"></a>00198
+<a name="l00199"></a>00199 <a class="code" href="classTXMPIterator.html">TXMPIterator</a>(); <span class="comment">// ! Hidden, must choose property or table iteration.</span>
+<a name="l00200"></a>00200
+<a name="l00201"></a>00201 }; <span class="comment">// class TXMPIterator</span>
+<a name="l00202"></a>00202
+<a name="l00203"></a>00203 <span class="comment">// =================================================================================================</span>
+<a name="l00204"></a>00204
+<a name="l00205"></a>00205 <span class="preprocessor">#endif // __TXMPIterator_hpp__</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu May 3 14:54:57 2007 for Adobe XMP Toolkit by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address>
+</body>
+</html>
diff --git a/docs/XMPToolkit/TXMPIterator_8hpp.html b/docs/XMPToolkit/TXMPIterator_8hpp.html
new file mode 100644
index 0000000..4bca589
--- /dev/null
+++ b/docs/XMPToolkit/TXMPIterator_8hpp.html
@@ -0,0 +1,37 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Adobe XMP Toolkit: TXMPIterator.hpp File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.1 -->
+<div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li id="current"><a href="files.html"><span>Files</span></a></li>
+ </ul></div>
+<h1>TXMPIterator.hpp File Reference</h1>Template class for the XMP Toolkit iteration services. <a href="#_details">More...</a>
+<p>
+<code>#include &quot;client-glue/WXMPIterator.hpp&quot;</code><br>
+
+<p>
+Include dependency graph for TXMPIterator.hpp:<p><center><img src="TXMPIterator_8hpp__incl.png" border="0" usemap="#TXMPIterator.hpp_map" alt=""></center>
+
+<p>
+<a href="TXMPIterator_8hpp-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPIterator.html">TXMPIterator&lt; tStringObj &gt;</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Template class for the XMP Toolkit iteration services. <a href="classTXMPIterator.html#_details">More...</a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Template class for the XMP Toolkit iteration services.
+<p>
+This template class provides iteration services for the XMP Toolkit. It should be instantiated with a string class such as <code>std::string</code>. Please read the general usage notes for information on the overall architecture of the XMP API. <hr size="1"><address style="align: right;"><small>Generated on Thu May 3 14:54:57 2007 for Adobe XMP Toolkit by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address>
+</body>
+</html>
diff --git a/docs/XMPToolkit/TXMPIterator_8hpp__incl.png b/docs/XMPToolkit/TXMPIterator_8hpp__incl.png
new file mode 100644
index 0000000..b3e627b
--- /dev/null
+++ b/docs/XMPToolkit/TXMPIterator_8hpp__incl.png
Binary files differ
diff --git a/docs/XMPToolkit/TXMPIterator_8incl__cpp.html b/docs/XMPToolkit/TXMPIterator_8incl__cpp.html
new file mode 100644
index 0000000..ee6f9d8
--- /dev/null
+++ b/docs/XMPToolkit/TXMPIterator_8incl__cpp.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Adobe XMP Toolkit: TXMPIterator.incl_cpp File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.1 -->
+<div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li id="current"><a href="files.html"><span>Files</span></a></li>
+ </ul></div>
+<h1>TXMPIterator.incl_cpp File Reference</h1>The implementation of the <a class="el" href="classTXMPIterator.html">TXMPIterator</a> template class. <a href="#_details">More...</a>
+<p>
+<code>#include &quot;XMP.hpp&quot;</code><br>
+<code>#include &quot;client-glue/WXMP_Common.hpp&quot;</code><br>
+<code>#include &quot;client-glue/WXMPIterator.hpp&quot;</code><br>
+
+<p>
+Include dependency graph for TXMPIterator.incl_cpp:<p><center><img src="TXMPIterator_8incl__cpp__incl.png" border="0" usemap="#TXMPIterator.incl_cpp_map" alt=""></center>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The implementation of the <a class="el" href="classTXMPIterator.html">TXMPIterator</a> template class.
+<p>
+<hr size="1"><address style="align: right;"><small>Generated on Thu May 3 14:54:58 2007 for Adobe XMP Toolkit by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address>
+</body>
+</html>
diff --git a/docs/XMPToolkit/TXMPIterator_8incl__cpp__incl.png b/docs/XMPToolkit/TXMPIterator_8incl__cpp__incl.png
new file mode 100644
index 0000000..e2c9422
--- /dev/null
+++ b/docs/XMPToolkit/TXMPIterator_8incl__cpp__incl.png
Binary files differ
diff --git a/docs/XMPToolkit/TXMPMeta_8hpp-source.html b/docs/XMPToolkit/TXMPMeta_8hpp-source.html
new file mode 100644
index 0000000..1aa7688
--- /dev/null
+++ b/docs/XMPToolkit/TXMPMeta_8hpp-source.html
@@ -0,0 +1,617 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Adobe XMP Toolkit: TXMPMeta.hpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.1 -->
+<div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li id="current"><a href="files.html"><span>Files</span></a></li>
+ </ul></div>
+<h1>TXMPMeta.hpp</h1><a href="TXMPMeta_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef __TXMPMeta_hpp__</span>
+<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define __TXMPMeta_hpp__ 1</span>
+<a name="l00003"></a>00003 <span class="preprocessor"></span>
+<a name="l00004"></a>00004 <span class="preprocessor">#if ( ! __XMP_hpp__ )</span>
+<a name="l00005"></a>00005 <span class="preprocessor"></span><span class="preprocessor"> #error "Do not directly include, use XMP.hpp"</span>
+<a name="l00006"></a>00006 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00007"></a>00007 <span class="preprocessor"></span>
+<a name="l00008"></a>00008 <span class="comment">// =================================================================================================</span>
+<a name="l00009"></a>00009 <span class="comment">// ADOBE SYSTEMS INCORPORATED</span>
+<a name="l00010"></a>00010 <span class="comment">// Copyright 2002-2007 Adobe Systems Incorporated</span>
+<a name="l00011"></a>00011 <span class="comment">// All Rights Reserved</span>
+<a name="l00012"></a>00012 <span class="comment">//</span>
+<a name="l00013"></a>00013 <span class="comment">// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms</span>
+<a name="l00014"></a>00014 <span class="comment">// of the Adobe license agreement accompanying it.</span>
+<a name="l00015"></a>00015 <span class="comment">// =================================================================================================</span>
+<a name="l00016"></a>00016
+<a name="l00017"></a>00017 <span class="comment">// ================================================================================================</span>
+<a name="l00024"></a>00024 <span class="comment"></span><span class="comment">// ================================================================================================</span>
+<a name="l00025"></a>00025
+<a name="l00026"></a>00026 <span class="comment">// ================================================================================================</span>
+<a name="l00063"></a>00063 <span class="comment"></span><span class="comment">// ================================================================================================</span>
+<a name="l00064"></a>00064
+<a name="l00065"></a>00065 <span class="keyword">template</span> &lt;<span class="keyword">class</span> tStringObj&gt; <span class="keyword">class </span><a class="code" href="classTXMPIterator.html">TXMPIterator</a>;
+<a name="l00066"></a>00066 <span class="keyword">template</span> &lt;<span class="keyword">class</span> tStringObj&gt; <span class="keyword">class </span><a class="code" href="classTXMPUtils.html">TXMPUtils</a>;
+<a name="l00067"></a>00067
+<a name="l00068"></a>00068 <span class="comment">// -------------------------------------------------------------------------------------------------</span>
+<a name="l00069"></a>00069
+<a name="l00070"></a>00070 <span class="keyword">template</span> &lt;<span class="keyword">class</span> tStringObj&gt;
+<a name="l00071"></a><a class="code" href="classTXMPMeta.html">00071</a> <span class="keyword">class </span><a class="code" href="classTXMPMeta.html">TXMPMeta</a> {
+<a name="l00072"></a>00072
+<a name="l00073"></a>00073 <span class="keyword">public</span>:
+<a name="l00074"></a>00074
+<a name="l00075"></a>00075 <span class="comment">// =============================================================================================</span>
+<a name="l00076"></a>00076 <span class="comment">// Initialization and termination</span>
+<a name="l00077"></a>00077 <span class="comment">// ==============================</span>
+<a name="l00078"></a>00078
+<a name="l00079"></a>00079 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00082"></a>00082 <span class="comment"></span>
+<a name="l00083"></a>00083 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00085"></a>00085 <span class="comment"></span>
+<a name="l00086"></a>00086 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00087"></a>00087 <a class="code" href="classTXMPMeta.html#5415cfc01a9cb8786939246571a23a9d">GetVersionInfo</a> ( XMP_VersionInfo * info );
+<a name="l00088"></a>00088
+<a name="l00089"></a>00089 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00094"></a>00094 <span class="comment"></span>
+<a name="l00095"></a>00095 <span class="keyword">static</span> <span class="keywordtype">bool</span>
+<a name="l00096"></a>00096 <a class="code" href="classTXMPMeta.html#bfddf1df0e01ab33d5636a80edc973ca">Initialize</a>();
+<a name="l00097"></a>00097 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00099"></a>00099 <span class="comment"></span>
+<a name="l00100"></a>00100 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00101"></a>00101 <a class="code" href="classTXMPMeta.html#6c30fae26173167958b6f0da95a53865">Terminate</a>();
+<a name="l00102"></a>00102
+<a name="l00104"></a>00104
+<a name="l00105"></a>00105 <span class="comment">// =============================================================================================</span>
+<a name="l00106"></a>00106 <span class="comment">// Constuctors and destructor</span>
+<a name="l00107"></a>00107 <span class="comment">// =========================</span>
+<a name="l00108"></a>00108
+<a name="l00109"></a>00109 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00112"></a>00112 <span class="comment"></span>
+<a name="l00113"></a>00113 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00117"></a>00117 <span class="comment"></span>
+<a name="l00118"></a>00118 <a class="code" href="classTXMPMeta.html#7729cbce91956632289b88d85fdc65ae">TXMPMeta</a>();
+<a name="l00119"></a>00119
+<a name="l00120"></a>00120 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00124"></a>00124 <span class="comment"></span>
+<a name="l00125"></a>00125 <a class="code" href="classTXMPMeta.html#7729cbce91956632289b88d85fdc65ae">TXMPMeta</a> ( <span class="keyword">const</span> <a class="code" href="classTXMPMeta.html">TXMPMeta&lt;tStringObj&gt;</a> &amp; original );
+<a name="l00126"></a>00126
+<a name="l00127"></a>00127 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00132"></a>00132 <span class="comment"></span>
+<a name="l00133"></a>00133 <span class="keywordtype">void</span> <a class="code" href="classTXMPMeta.html#4d5a601c9b77f6f6ab5f14e658de58ef">operator= </a>( <span class="keyword">const</span> <a class="code" href="classTXMPMeta.html">TXMPMeta&lt;tStringObj&gt;</a> &amp; rhs );
+<a name="l00134"></a>00134
+<a name="l00135"></a>00135 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00141"></a>00141 <span class="comment"></span>
+<a name="l00142"></a>00142 <a class="code" href="classTXMPMeta.html#7729cbce91956632289b88d85fdc65ae">TXMPMeta</a> ( <a class="code" href="XMP__Const_8h.html#5912613564f80e17eb10acef9236f70a">XMPMetaRef</a> xmpRef );
+<a name="l00143"></a>00143
+<a name="l00144"></a>00144 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00157"></a>00157 <span class="comment"></span>
+<a name="l00158"></a>00158 <a class="code" href="classTXMPMeta.html#7729cbce91956632289b88d85fdc65ae">TXMPMeta</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> buffer,
+<a name="l00159"></a>00159 <a class="code" href="XMP__Const_8h.html#9f7dcc184f901c713274edfdac5bcc9a">XMP_StringLen</a> xmpSize );
+<a name="l00160"></a>00160
+<a name="l00161"></a>00161 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00163"></a>00163 <span class="comment"></span>
+<a name="l00164"></a>00164 <span class="keyword">virtual</span> <a class="code" href="classTXMPMeta.html#bab5013870cd47eb0d9d701653735a02">~TXMPMeta</a>() <span class="keywordflow">throw</span>();
+<a name="l00165"></a>00165
+<a name="l00167"></a>00167
+<a name="l00168"></a>00168 <span class="comment">// =============================================================================================</span>
+<a name="l00169"></a>00169 <span class="comment">// Global state functions</span>
+<a name="l00170"></a>00170 <span class="comment">// ======================</span>
+<a name="l00171"></a>00171
+<a name="l00172"></a>00172 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00177"></a>00177 <span class="comment"></span>
+<a name="l00179"></a>00179
+<a name="l00180"></a>00180 <span class="keyword">static</span> <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a>
+<a name="l00181"></a>00181 <a class="code" href="classTXMPMeta.html#12b2435ba039c62a164951948c016eb4">GetGlobalOptions</a>();
+<a name="l00182"></a>00182
+<a name="l00188"></a>00188
+<a name="l00189"></a>00189 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00190"></a>00190 <a class="code" href="classTXMPMeta.html#e7bb38d9b3857b08106630a386b47332">SetGlobalOptions</a> ( <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options );
+<a name="l00191"></a>00191
+<a name="l00193"></a>00193
+<a name="l00194"></a>00194 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00199"></a>00199 <span class="comment"></span>
+<a name="l00201"></a>00201
+<a name="l00202"></a>00202 <span class="keyword">static</span> <a class="code" href="XMP__Const_8h.html#91efdc0a7fbe6e1d42ca34e6ce589b98">XMP_Status</a>
+<a name="l00203"></a>00203 <a class="code" href="classTXMPMeta.html#44250140a710c0b7c5cc0881e387d004">DumpNamespaces</a> ( <a class="code" href="XMP__Const_8h.html#36eab570ab85ff8fb5789661692d13c2">XMP_TextOutputProc</a> outProc,
+<a name="l00204"></a>00204 <span class="keywordtype">void</span> * refCon );
+<a name="l00205"></a>00205
+<a name="l00207"></a>00207
+<a name="l00208"></a>00208 <span class="keyword">static</span> <a class="code" href="XMP__Const_8h.html#91efdc0a7fbe6e1d42ca34e6ce589b98">XMP_Status</a>
+<a name="l00209"></a>00209 <a class="code" href="classTXMPMeta.html#afb027f200b85467298d237a0c23949b">DumpAliases</a> ( <a class="code" href="XMP__Const_8h.html#36eab570ab85ff8fb5789661692d13c2">XMP_TextOutputProc</a> outProc,
+<a name="l00210"></a>00210 <span class="keywordtype">void</span> * refCon );
+<a name="l00211"></a>00211
+<a name="l00213"></a>00213
+<a name="l00214"></a>00214 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00224"></a>00224 <span class="comment"></span>
+<a name="l00225"></a>00225 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00243"></a>00243 <span class="comment"></span>
+<a name="l00244"></a>00244 <span class="keyword">static</span> <span class="keywordtype">bool</span>
+<a name="l00245"></a>00245 <a class="code" href="classTXMPMeta.html#4c69d31a37ff24c85679229c479aa1ac">RegisterNamespace</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> namespaceURI,
+<a name="l00246"></a>00246 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> suggestedPrefix,
+<a name="l00247"></a>00247 tStringObj * registeredPrefix );
+<a name="l00248"></a>00248
+<a name="l00249"></a>00249 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00260"></a>00260 <span class="comment"></span>
+<a name="l00261"></a>00261 <span class="keyword">static</span> <span class="keywordtype">bool</span>
+<a name="l00262"></a>00262 <a class="code" href="classTXMPMeta.html#f28589472d8c0397db6cef868f2b8c97">GetNamespacePrefix</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> namespaceURI,
+<a name="l00263"></a>00263 tStringObj * namespacePrefix );
+<a name="l00264"></a>00264
+<a name="l00265"></a>00265 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00276"></a>00276 <span class="comment"></span>
+<a name="l00277"></a>00277 <span class="keyword">static</span> <span class="keywordtype">bool</span>
+<a name="l00278"></a>00278 <a class="code" href="classTXMPMeta.html#a20c84e7549d0a3252fa29a1e83a757a">GetNamespaceURI</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> namespacePrefix,
+<a name="l00279"></a>00279 tStringObj * namespaceURI );
+<a name="l00280"></a>00280
+<a name="l00281"></a>00281 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00290"></a>00290 <span class="comment"></span>
+<a name="l00291"></a>00291 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00292"></a>00292 <a class="code" href="classTXMPMeta.html#3f989597e95db929676273cacd4ea09a">DeleteNamespace</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> namespaceURI );
+<a name="l00293"></a>00293
+<a name="l00295"></a>00295
+<a name="l00296"></a>00296 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00311"></a>00311 <span class="comment"></span>
+<a name="l00312"></a>00312 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00348"></a>00348 <span class="comment"></span>
+<a name="l00349"></a>00349 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00350"></a>00350 <a class="code" href="classTXMPMeta.html#b9463c7459125ca0038db2e586c5e4df">RegisterAlias</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> aliasNS,
+<a name="l00351"></a>00351 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> aliasProp,
+<a name="l00352"></a>00352 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> actualNS,
+<a name="l00353"></a>00353 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> actualProp,
+<a name="l00354"></a>00354 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> arrayForm = kXMP_NoOptions );
+<a name="l00355"></a>00355
+<a name="l00356"></a>00356 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00382"></a>00382 <span class="comment"></span>
+<a name="l00383"></a>00383 <span class="keyword">static</span> <span class="keywordtype">bool</span>
+<a name="l00384"></a>00384 <a class="code" href="classTXMPMeta.html#c4b9c75202f2b961ad92f10a9e504e9a">ResolveAlias</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> aliasNS,
+<a name="l00385"></a>00385 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> aliasProp,
+<a name="l00386"></a>00386 tStringObj * actualNS,
+<a name="l00387"></a>00387 tStringObj * actualProp,
+<a name="l00388"></a>00388 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> * arrayForm );
+<a name="l00389"></a>00389
+<a name="l00390"></a>00390 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00401"></a>00401 <span class="comment"></span>
+<a name="l00402"></a>00402 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00403"></a>00403 <a class="code" href="classTXMPMeta.html#af64964e983235247ef65c86a42a4675">DeleteAlias</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> aliasNS,
+<a name="l00404"></a>00404 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> aliasProp );
+<a name="l00405"></a>00405
+<a name="l00406"></a>00406 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00413"></a>00413 <span class="comment"></span>
+<a name="l00414"></a>00414 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00415"></a>00415 <a class="code" href="classTXMPMeta.html#b77cf73fa0cc63d845f113b3d1c83602">RegisterStandardAliases</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS );
+<a name="l00416"></a>00416
+<a name="l00418"></a>00418
+<a name="l00419"></a>00419 <span class="comment">// =============================================================================================</span>
+<a name="l00420"></a>00420 <span class="comment">// Basic property manipulation functions</span>
+<a name="l00421"></a>00421 <span class="comment">// =====================================</span>
+<a name="l00422"></a>00422
+<a name="l00423"></a>00423 <span class="comment">// *** Should add discussion of schemaNS and propName prefix usage.</span>
+<a name="l00424"></a>00424
+<a name="l00425"></a>00425 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00484"></a>00484 <span class="comment"></span>
+<a name="l00485"></a>00485 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00507"></a>00507 <span class="comment"></span>
+<a name="l00508"></a>00508 <span class="keywordtype">bool</span>
+<a name="l00509"></a>00509 <a class="code" href="classTXMPMeta.html#06a3241c7fa5df87f61dff02fca23a0c">GetProperty</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l00510"></a>00510 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName,
+<a name="l00511"></a>00511 tStringObj * propValue,
+<a name="l00512"></a>00512 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> * options ) <span class="keyword">const</span>;
+<a name="l00513"></a>00513
+<a name="l00514"></a>00514 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00535"></a>00535 <span class="comment"></span>
+<a name="l00536"></a>00536 <span class="keywordtype">bool</span>
+<a name="l00537"></a>00537 <a class="code" href="classTXMPMeta.html#c64a4251d157937f69b73f2ffac4f7cc">GetArrayItem</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l00538"></a>00538 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> arrayName,
+<a name="l00539"></a>00539 <a class="code" href="XMP__Const_8h.html#00e9d9a76c144421105a4c2742203315">XMP_Index</a> itemIndex,
+<a name="l00540"></a>00540 tStringObj * itemValue,
+<a name="l00541"></a>00541 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> * options ) <span class="keyword">const</span>;
+<a name="l00542"></a>00542
+<a name="l00543"></a>00543 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00571"></a>00571 <span class="comment"></span>
+<a name="l00572"></a>00572 <span class="keywordtype">bool</span>
+<a name="l00573"></a>00573 <a class="code" href="classTXMPMeta.html#e99d2bc414d5cd68851147aef6710d4a">GetStructField</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l00574"></a>00574 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> structName,
+<a name="l00575"></a>00575 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldNS,
+<a name="l00576"></a>00576 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldName,
+<a name="l00577"></a>00577 tStringObj * fieldValue,
+<a name="l00578"></a>00578 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> * options ) <span class="keyword">const</span>;
+<a name="l00579"></a>00579
+<a name="l00580"></a>00580 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00613"></a>00613 <span class="comment"></span>
+<a name="l00614"></a>00614 <span class="keywordtype">bool</span>
+<a name="l00615"></a>00615 <a class="code" href="classTXMPMeta.html#2cc58d8316043b035643e7c21633bc13">GetQualifier</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l00616"></a>00616 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName,
+<a name="l00617"></a>00617 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> qualNS,
+<a name="l00618"></a>00618 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> qualName,
+<a name="l00619"></a>00619 tStringObj * qualValue,
+<a name="l00620"></a>00620 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> * options ) <span class="keyword">const</span>;
+<a name="l00621"></a>00621
+<a name="l00623"></a>00623
+<a name="l00624"></a>00624 <span class="comment">// =============================================================================================</span>
+<a name="l00625"></a>00625
+<a name="l00626"></a>00626 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00670"></a>00670 <span class="comment"></span>
+<a name="l00671"></a>00671 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00684"></a>00684 <span class="comment"></span>
+<a name="l00685"></a>00685 <span class="keywordtype">void</span>
+<a name="l00686"></a>00686 <a class="code" href="classTXMPMeta.html#1dfd6a08ebfd1a6364b3a7b6584bcc28">SetProperty</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l00687"></a>00687 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName,
+<a name="l00688"></a>00688 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propValue,
+<a name="l00689"></a>00689 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options = 0 );
+<a name="l00690"></a>00690
+<a name="l00691"></a>00691 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00694"></a>00694 <span class="comment"></span>
+<a name="l00695"></a>00695 <span class="keywordtype">void</span>
+<a name="l00696"></a>00696 <a class="code" href="classTXMPMeta.html#1dfd6a08ebfd1a6364b3a7b6584bcc28">SetProperty</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l00697"></a>00697 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName,
+<a name="l00698"></a>00698 <span class="keyword">const</span> tStringObj &amp; propValue,
+<a name="l00699"></a>00699 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options = 0 );
+<a name="l00700"></a>00700
+<a name="l00701"></a>00701 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00726"></a>00726 <span class="comment"></span>
+<a name="l00727"></a>00727 <span class="keywordtype">void</span>
+<a name="l00728"></a>00728 <a class="code" href="classTXMPMeta.html#1570eb89d613b4a94ca572e4644168cc">SetArrayItem</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l00729"></a>00729 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> arrayName,
+<a name="l00730"></a>00730 <a class="code" href="XMP__Const_8h.html#00e9d9a76c144421105a4c2742203315">XMP_Index</a> itemIndex,
+<a name="l00731"></a>00731 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> itemValue,
+<a name="l00732"></a>00732 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options = 0 );
+<a name="l00733"></a>00733
+<a name="l00734"></a>00734 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00737"></a>00737 <span class="comment"></span>
+<a name="l00738"></a>00738 <span class="keywordtype">void</span>
+<a name="l00739"></a>00739 <a class="code" href="classTXMPMeta.html#1570eb89d613b4a94ca572e4644168cc">SetArrayItem</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l00740"></a>00740 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> arrayName,
+<a name="l00741"></a>00741 <a class="code" href="XMP__Const_8h.html#00e9d9a76c144421105a4c2742203315">XMP_Index</a> itemIndex,
+<a name="l00742"></a>00742 <span class="keyword">const</span> tStringObj &amp; itemValue,
+<a name="l00743"></a>00743 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options = 0 );
+<a name="l00744"></a>00744
+<a name="l00745"></a>00745 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00767"></a>00767 <span class="comment"></span>
+<a name="l00768"></a>00768 <span class="keywordtype">void</span>
+<a name="l00769"></a>00769 <a class="code" href="classTXMPMeta.html#00d7314dc970ad390499ce9db27d314a">AppendArrayItem</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l00770"></a>00770 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> arrayName,
+<a name="l00771"></a>00771 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> arrayOptions,
+<a name="l00772"></a>00772 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> itemValue,
+<a name="l00773"></a>00773 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> itemOptions = 0 );
+<a name="l00774"></a>00774
+<a name="l00775"></a>00775 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00778"></a>00778 <span class="comment"></span>
+<a name="l00779"></a>00779 <span class="keywordtype">void</span>
+<a name="l00780"></a>00780 <a class="code" href="classTXMPMeta.html#00d7314dc970ad390499ce9db27d314a">AppendArrayItem</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l00781"></a>00781 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> arrayName,
+<a name="l00782"></a>00782 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> arrayOptions,
+<a name="l00783"></a>00783 <span class="keyword">const</span> tStringObj &amp; itemValue,
+<a name="l00784"></a>00784 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> itemOptions = 0 );
+<a name="l00785"></a>00785
+<a name="l00786"></a>00786 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00811"></a>00811 <span class="comment"></span>
+<a name="l00812"></a>00812 <span class="keywordtype">void</span>
+<a name="l00813"></a>00813 <a class="code" href="classTXMPMeta.html#0e44c30e7527064909e5f7035d53c4f5">SetStructField</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l00814"></a>00814 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> structName,
+<a name="l00815"></a>00815 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldNS,
+<a name="l00816"></a>00816 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldName,
+<a name="l00817"></a>00817 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldValue,
+<a name="l00818"></a>00818 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options = 0 );
+<a name="l00819"></a>00819
+<a name="l00820"></a>00820 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00823"></a>00823 <span class="comment"></span>
+<a name="l00824"></a>00824 <span class="keywordtype">void</span>
+<a name="l00825"></a>00825 <a class="code" href="classTXMPMeta.html#0e44c30e7527064909e5f7035d53c4f5">SetStructField</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l00826"></a>00826 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> structName,
+<a name="l00827"></a>00827 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldNS,
+<a name="l00828"></a>00828 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldName,
+<a name="l00829"></a>00829 <span class="keyword">const</span> tStringObj &amp; fieldValue,
+<a name="l00830"></a>00830 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options = 0 );
+<a name="l00831"></a>00831
+<a name="l00832"></a>00832 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00859"></a>00859 <span class="comment"></span>
+<a name="l00860"></a>00860 <span class="keywordtype">void</span>
+<a name="l00861"></a>00861 <a class="code" href="classTXMPMeta.html#c2e798da5f9d94e486382a41e73fcea3">SetQualifier</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l00862"></a>00862 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName,
+<a name="l00863"></a>00863 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> qualNS,
+<a name="l00864"></a>00864 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> qualName,
+<a name="l00865"></a>00865 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> qualValue,
+<a name="l00866"></a>00866 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options = 0 );
+<a name="l00867"></a>00867
+<a name="l00868"></a>00868 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00871"></a>00871 <span class="comment"></span>
+<a name="l00872"></a>00872 <span class="keywordtype">void</span>
+<a name="l00873"></a>00873 <a class="code" href="classTXMPMeta.html#c2e798da5f9d94e486382a41e73fcea3">SetQualifier</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l00874"></a>00874 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName,
+<a name="l00875"></a>00875 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> qualNS,
+<a name="l00876"></a>00876 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> qualName,
+<a name="l00877"></a>00877 <span class="keyword">const</span> tStringObj &amp; qualValue,
+<a name="l00878"></a>00878 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options = 0 );
+<a name="l00879"></a>00879
+<a name="l00881"></a>00881
+<a name="l00882"></a>00882 <span class="comment">// =============================================================================================</span>
+<a name="l00883"></a>00883
+<a name="l00884"></a>00884 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00888"></a>00888 <span class="comment"></span>
+<a name="l00889"></a>00889 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00896"></a>00896 <span class="comment"></span>
+<a name="l00897"></a>00897 <span class="keywordtype">void</span>
+<a name="l00898"></a>00898 <a class="code" href="classTXMPMeta.html#c8b555ba99904fa49bb4851a60cc3844">DeleteProperty</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l00899"></a>00899 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName );
+<a name="l00900"></a>00900
+<a name="l00901"></a>00901 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00912"></a>00912 <span class="comment"></span>
+<a name="l00913"></a>00913 <span class="keywordtype">void</span>
+<a name="l00914"></a>00914 <a class="code" href="classTXMPMeta.html#bc1211f47225b5973a170ff952743264">DeleteArrayItem</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l00915"></a>00915 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> arrayName,
+<a name="l00916"></a>00916 <a class="code" href="XMP__Const_8h.html#00e9d9a76c144421105a4c2742203315">XMP_Index</a> itemIndex );
+<a name="l00917"></a>00917
+<a name="l00918"></a>00918 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00932"></a>00932 <span class="comment"></span>
+<a name="l00933"></a>00933 <span class="keywordtype">void</span>
+<a name="l00934"></a>00934 <a class="code" href="classTXMPMeta.html#bc258e027780a15be65a88fcfd4e1fd4">DeleteStructField</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l00935"></a>00935 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> structName,
+<a name="l00936"></a>00936 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldNS,
+<a name="l00937"></a>00937 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldName );
+<a name="l00938"></a>00938
+<a name="l00939"></a>00939 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00953"></a>00953 <span class="comment"></span>
+<a name="l00954"></a>00954 <span class="keywordtype">void</span>
+<a name="l00955"></a>00955 <a class="code" href="classTXMPMeta.html#8ce15f7de7fd3b258f07158ab5fa88be">DeleteQualifier</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l00956"></a>00956 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName,
+<a name="l00957"></a>00957 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> qualNS,
+<a name="l00958"></a>00958 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> qualName );
+<a name="l00959"></a>00959
+<a name="l00960"></a>00960 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00968"></a>00968 <span class="comment"></span>
+<a name="l00969"></a>00969 <span class="keywordtype">bool</span>
+<a name="l00970"></a>00970 <a class="code" href="classTXMPMeta.html#f22b116d71ecbbebea016ec5337e7066">DoesPropertyExist</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l00971"></a>00971 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName ) <span class="keyword">const</span>;
+<a name="l00972"></a>00972
+<a name="l00973"></a>00973 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00985"></a>00985 <span class="comment"></span>
+<a name="l00986"></a>00986 <span class="keywordtype">bool</span>
+<a name="l00987"></a>00987 <a class="code" href="classTXMPMeta.html#492465c588d6d4cb8e30f94790e66f58">DoesArrayItemExist</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l00988"></a>00988 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> arrayName,
+<a name="l00989"></a>00989 <a class="code" href="XMP__Const_8h.html#00e9d9a76c144421105a4c2742203315">XMP_Index</a> itemIndex ) <span class="keyword">const</span>;
+<a name="l00990"></a>00990
+<a name="l00991"></a>00991 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l01006"></a>01006 <span class="comment"></span>
+<a name="l01007"></a>01007 <span class="keywordtype">bool</span>
+<a name="l01008"></a>01008 <a class="code" href="classTXMPMeta.html#9261b80d62e77a10ff1a89843bfa10a5">DoesStructFieldExist</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l01009"></a>01009 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> structName,
+<a name="l01010"></a>01010 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldNS,
+<a name="l01011"></a>01011 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldName ) <span class="keyword">const</span>;
+<a name="l01012"></a>01012
+<a name="l01013"></a>01013 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l01028"></a>01028 <span class="comment"></span>
+<a name="l01029"></a>01029 <span class="keywordtype">bool</span>
+<a name="l01030"></a>01030 <a class="code" href="classTXMPMeta.html#81347a92becd387a14f4d47c582f129a">DoesQualifierExist</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l01031"></a>01031 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName,
+<a name="l01032"></a>01032 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> qualNS,
+<a name="l01033"></a>01033 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> qualName ) <span class="keyword">const</span>;
+<a name="l01034"></a>01034
+<a name="l01036"></a>01036
+<a name="l01037"></a>01037 <span class="comment">// =============================================================================================</span>
+<a name="l01038"></a>01038 <span class="comment">// Specialized Get and Set functions</span>
+<a name="l01039"></a>01039 <span class="comment">// =================================</span>
+<a name="l01040"></a>01040
+<a name="l01041"></a>01041 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l01094"></a>01094 <span class="comment"></span>
+<a name="l01095"></a>01095 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l01123"></a>01123 <span class="comment"></span>
+<a name="l01124"></a>01124 <span class="keywordtype">bool</span>
+<a name="l01125"></a>01125 <a class="code" href="classTXMPMeta.html#eefe49bbf669770d769f4fe0ea566bd0">GetLocalizedText</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l01126"></a>01126 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> altTextName,
+<a name="l01127"></a>01127 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> genericLang,
+<a name="l01128"></a>01128 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> specificLang,
+<a name="l01129"></a>01129 tStringObj * actualLang,
+<a name="l01130"></a>01130 tStringObj * itemValue,
+<a name="l01131"></a>01131 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> * options ) <span class="keyword">const</span>;
+<a name="l01132"></a>01132
+<a name="l01133"></a>01133 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l01174"></a>01174 <span class="comment"></span>
+<a name="l01175"></a>01175 <span class="keywordtype">void</span>
+<a name="l01176"></a>01176 <a class="code" href="classTXMPMeta.html#f9531b949a462f5663b1f3fd99464c19">SetLocalizedText</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l01177"></a>01177 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> altTextName,
+<a name="l01178"></a>01178 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> genericLang,
+<a name="l01179"></a>01179 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> specificLang,
+<a name="l01180"></a>01180 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> itemValue,
+<a name="l01181"></a>01181 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options = 0 );
+<a name="l01182"></a>01182
+<a name="l01183"></a>01183 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l01186"></a>01186 <span class="comment"></span>
+<a name="l01187"></a>01187 <span class="keywordtype">void</span>
+<a name="l01188"></a>01188 <a class="code" href="classTXMPMeta.html#f9531b949a462f5663b1f3fd99464c19">SetLocalizedText</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l01189"></a>01189 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> altTextName,
+<a name="l01190"></a>01190 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> genericLang,
+<a name="l01191"></a>01191 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> specificLang,
+<a name="l01192"></a>01192 <span class="keyword">const</span> tStringObj &amp; itemValue,
+<a name="l01193"></a>01193 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options = 0 );
+<a name="l01194"></a>01194
+<a name="l01196"></a>01196
+<a name="l01197"></a>01197 <span class="comment">// =============================================================================================</span>
+<a name="l01198"></a>01198
+<a name="l01199"></a>01199 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l01207"></a>01207 <span class="comment"></span>
+<a name="l01208"></a>01208 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l01222"></a>01222 <span class="comment"></span>
+<a name="l01223"></a>01223 <span class="keywordtype">bool</span>
+<a name="l01224"></a>01224 <a class="code" href="classTXMPMeta.html#dcf8a1959a8bd42641a42cbd4d64a5b7">GetProperty_Bool</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l01225"></a>01225 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName,
+<a name="l01226"></a>01226 <span class="keywordtype">bool</span> * propValue,
+<a name="l01227"></a>01227 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> * options ) <span class="keyword">const</span>;
+<a name="l01228"></a>01228
+<a name="l01229"></a>01229 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l01243"></a>01243 <span class="comment"></span>
+<a name="l01244"></a>01244 <span class="keywordtype">bool</span>
+<a name="l01245"></a>01245 <a class="code" href="classTXMPMeta.html#3b6ba486c02607b544917091c43b05cc">GetProperty_Int</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l01246"></a>01246 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName,
+<a name="l01247"></a>01247 <span class="keywordtype">long</span> * propValue,
+<a name="l01248"></a>01248 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> * options ) <span class="keyword">const</span>;
+<a name="l01249"></a>01249
+<a name="l01250"></a>01250 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l01264"></a>01264 <span class="comment"></span>
+<a name="l01265"></a>01265 <span class="keywordtype">bool</span>
+<a name="l01266"></a>01266 <a class="code" href="classTXMPMeta.html#d1a6629b0466981b67d31c9dc3840ea7">GetProperty_Int64</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l01267"></a>01267 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName,
+<a name="l01268"></a>01268 <span class="keywordtype">long</span> <span class="keywordtype">long</span> * propValue,
+<a name="l01269"></a>01269 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> * options ) <span class="keyword">const</span>;
+<a name="l01270"></a>01270
+<a name="l01271"></a>01271 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l01285"></a>01285 <span class="comment"></span>
+<a name="l01286"></a>01286 <span class="keywordtype">bool</span>
+<a name="l01287"></a>01287 <a class="code" href="classTXMPMeta.html#7708c31c9af3e740b27a4893dcd9aa47">GetProperty_Float</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l01288"></a>01288 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName,
+<a name="l01289"></a>01289 <span class="keywordtype">double</span> * propValue,
+<a name="l01290"></a>01290 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> * options ) <span class="keyword">const</span>;
+<a name="l01291"></a>01291
+<a name="l01292"></a>01292 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l01306"></a>01306 <span class="comment"></span>
+<a name="l01307"></a>01307 <span class="keywordtype">bool</span>
+<a name="l01308"></a>01308 <a class="code" href="classTXMPMeta.html#2f561295e73047ee90765558d29bd650">GetProperty_Date</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l01309"></a>01309 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName,
+<a name="l01310"></a>01310 <a class="code" href="structXMP__DateTime.html">XMP_DateTime</a> * propValue,
+<a name="l01311"></a>01311 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> * options ) <span class="keyword">const</span>;
+<a name="l01312"></a>01312
+<a name="l01313"></a>01313 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l01324"></a>01324 <span class="comment"></span>
+<a name="l01325"></a>01325 <span class="keywordtype">void</span>
+<a name="l01326"></a>01326 <a class="code" href="classTXMPMeta.html#9521e3838272ec501ffdb60ff3eb482f">SetProperty_Bool</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l01327"></a>01327 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName,
+<a name="l01328"></a>01328 <span class="keywordtype">bool</span> propValue,
+<a name="l01329"></a>01329 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options = 0 );
+<a name="l01330"></a>01330
+<a name="l01331"></a>01331 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l01341"></a>01341 <span class="comment"></span>
+<a name="l01342"></a>01342 <span class="keywordtype">void</span>
+<a name="l01343"></a>01343 <a class="code" href="classTXMPMeta.html#b8ae94130d9a05c1b9a3ee25588b6421">SetProperty_Int</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l01344"></a>01344 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName,
+<a name="l01345"></a>01345 <span class="keywordtype">long</span> propValue,
+<a name="l01346"></a>01346 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options = 0 );
+<a name="l01347"></a>01347
+<a name="l01348"></a>01348 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l01358"></a>01358 <span class="comment"></span>
+<a name="l01359"></a>01359 <span class="keywordtype">void</span>
+<a name="l01360"></a>01360 <a class="code" href="classTXMPMeta.html#df919aff205e934e4c8250a067f7b377">SetProperty_Int64</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l01361"></a>01361 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName,
+<a name="l01362"></a>01362 <span class="keywordtype">long</span> <span class="keywordtype">long</span> propValue,
+<a name="l01363"></a>01363 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options = 0 );
+<a name="l01364"></a>01364
+<a name="l01365"></a>01365 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l01375"></a>01375 <span class="comment"></span>
+<a name="l01376"></a>01376 <span class="keywordtype">void</span>
+<a name="l01377"></a>01377 <a class="code" href="classTXMPMeta.html#3b0f2f6bae57931ea96775f03608c0ed">SetProperty_Float</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l01378"></a>01378 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName,
+<a name="l01379"></a>01379 <span class="keywordtype">double</span> propValue,
+<a name="l01380"></a>01380 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options = 0 );
+<a name="l01381"></a>01381
+<a name="l01382"></a>01382 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l01392"></a>01392 <span class="comment"></span>
+<a name="l01393"></a>01393 <span class="keywordtype">void</span>
+<a name="l01394"></a>01394 <a class="code" href="classTXMPMeta.html#eee10669445f77139d5634199ff01079">SetProperty_Date</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l01395"></a>01395 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName,
+<a name="l01396"></a>01396 <span class="keyword">const</span> <a class="code" href="structXMP__DateTime.html">XMP_DateTime</a> &amp; propValue,
+<a name="l01397"></a>01397 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options = 0 );
+<a name="l01398"></a>01398
+<a name="l01400"></a>01400
+<a name="l01401"></a>01401 <span class="comment">// =============================================================================================</span>
+<a name="l01402"></a>01402 <span class="comment">// Miscellaneous Member Functions</span>
+<a name="l01403"></a>01403 <span class="comment">// ==============================</span>
+<a name="l01404"></a>01404
+<a name="l01405"></a>01405 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l01408"></a>01408 <span class="comment"></span>
+<a name="l01409"></a>01409 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l01412"></a>01412 <span class="comment"></span>
+<a name="l01413"></a>01413 <a class="code" href="XMP__Const_8h.html#5912613564f80e17eb10acef9236f70a">XMPMetaRef</a>
+<a name="l01414"></a>01414 <a class="code" href="classTXMPMeta.html#4d35b44f1f017a27772ee902a3dacf04">GetInternalRef</a>() <span class="keyword">const</span>;
+<a name="l01415"></a>01415
+<a name="l01416"></a>01416 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l01418"></a>01418 <span class="comment"></span>
+<a name="l01419"></a>01419 <span class="keywordtype">void</span>
+<a name="l01420"></a>01420 <a class="code" href="classTXMPMeta.html#b0d179ed95487d4fd4f2680c1fbe0d40">GetObjectName</a> ( tStringObj * name ) <span class="keyword">const</span>;
+<a name="l01421"></a>01421
+<a name="l01422"></a>01422 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l01424"></a>01424 <span class="comment"></span>
+<a name="l01425"></a>01425 <span class="keywordtype">void</span>
+<a name="l01426"></a>01426 <a class="code" href="classTXMPMeta.html#cf1935be8e4849976dfc02325424960a">SetObjectName</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> name );
+<a name="l01427"></a>01427
+<a name="l01428"></a>01428 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l01430"></a>01430 <span class="comment"></span>
+<a name="l01431"></a>01431 <span class="keywordtype">void</span>
+<a name="l01432"></a>01432 <a class="code" href="classTXMPMeta.html#cf1935be8e4849976dfc02325424960a">SetObjectName</a> ( tStringObj name );
+<a name="l01433"></a>01433
+<a name="l01434"></a>01434 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l01436"></a>01436 <span class="comment"></span>
+<a name="l01437"></a>01437 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a>
+<a name="l01438"></a>01438 <a class="code" href="classTXMPMeta.html#39aeaf9eb83cfc1c5455807b95f055f9">GetObjectOptions</a>() <span class="keyword">const</span>;
+<a name="l01439"></a>01439
+<a name="l01440"></a>01440 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l01444"></a>01444 <span class="comment"></span>
+<a name="l01445"></a>01445 <span class="keywordtype">void</span>
+<a name="l01446"></a>01446 <a class="code" href="classTXMPMeta.html#92055b3ae18dfd5e5491108f59318f17">SetObjectOptions</a> ( <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options );
+<a name="l01447"></a>01447
+<a name="l01448"></a>01448 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l01469"></a>01469 <span class="comment"></span>
+<a name="l01470"></a>01470 <a class="code" href="classTXMPMeta.html">TXMPMeta</a>
+<a name="l01471"></a>01471 <a class="code" href="classTXMPMeta.html#6ca653436995bbb76315efe7934afd4c">Clone</a> ( <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options = 0 ) <span class="keyword">const</span>;
+<a name="l01472"></a>01472
+<a name="l01473"></a>01473 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l01475"></a>01475 <span class="comment"></span>
+<a name="l01476"></a>01476 <a class="code" href="XMP__Const_8h.html#00e9d9a76c144421105a4c2742203315">XMP_Index</a>
+<a name="l01477"></a>01477 <a class="code" href="classTXMPMeta.html#b79aae864b3ce190d0699252f48e0acc">CountArrayItems</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l01478"></a>01478 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> arrayName ) <span class="keyword">const</span>;
+<a name="l01479"></a>01479
+<a name="l01480"></a>01480 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l01482"></a>01482 <span class="comment"></span>
+<a name="l01483"></a>01483 <a class="code" href="XMP__Const_8h.html#91efdc0a7fbe6e1d42ca34e6ce589b98">XMP_Status</a>
+<a name="l01484"></a>01484 <a class="code" href="classTXMPMeta.html#976c1eb889f44080f76628805712b618">DumpObject</a> ( <a class="code" href="XMP__Const_8h.html#36eab570ab85ff8fb5789661692d13c2">XMP_TextOutputProc</a> outProc,
+<a name="l01485"></a>01485 <span class="keywordtype">void</span> * refCon ) <span class="keyword">const</span>;
+<a name="l01486"></a>01486
+<a name="l01488"></a>01488
+<a name="l01489"></a>01489 <span class="comment">// =============================================================================================</span>
+<a name="l01490"></a>01490
+<a name="l01491"></a>01491 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l01497"></a>01497 <span class="comment"></span>
+<a name="l01498"></a>01498 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l01517"></a>01517 <span class="comment"></span>
+<a name="l01518"></a>01518 <span class="keywordtype">void</span>
+<a name="l01519"></a>01519 <a class="code" href="classTXMPMeta.html#7b383f5b357fff040cdbde82f4f43f26">ParseFromBuffer</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> buffer,
+<a name="l01520"></a>01520 <a class="code" href="XMP__Const_8h.html#9f7dcc184f901c713274edfdac5bcc9a">XMP_StringLen</a> bufferSize,
+<a name="l01521"></a>01521 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options = 0 );
+<a name="l01522"></a>01522
+<a name="l01523"></a>01523 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l01565"></a>01565 <span class="comment"></span>
+<a name="l01566"></a>01566 <span class="keywordtype">void</span>
+<a name="l01567"></a>01567 <a class="code" href="classTXMPMeta.html#2774a6f15ae22f0002201b58c46bfb49">SerializeToBuffer</a> ( tStringObj * rdfString,
+<a name="l01568"></a>01568 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options,
+<a name="l01569"></a>01569 <a class="code" href="XMP__Const_8h.html#9f7dcc184f901c713274edfdac5bcc9a">XMP_StringLen</a> padding,
+<a name="l01570"></a>01570 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> newline,
+<a name="l01571"></a>01571 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> indent = <span class="stringliteral">""</span>,
+<a name="l01572"></a>01572 <a class="code" href="XMP__Const_8h.html#00e9d9a76c144421105a4c2742203315">XMP_Index</a> baseIndent = 0 ) <span class="keyword">const</span>;
+<a name="l01573"></a>01573
+<a name="l01574"></a>01574 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l01578"></a>01578 <span class="comment"></span>
+<a name="l01579"></a>01579 <span class="keywordtype">void</span>
+<a name="l01580"></a>01580 <a class="code" href="classTXMPMeta.html#2774a6f15ae22f0002201b58c46bfb49">SerializeToBuffer</a> ( tStringObj * rdfString,
+<a name="l01581"></a>01581 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options = 0,
+<a name="l01582"></a>01582 <a class="code" href="XMP__Const_8h.html#9f7dcc184f901c713274edfdac5bcc9a">XMP_StringLen</a> padding = 0 ) <span class="keyword">const</span>;
+<a name="l01583"></a>01583
+<a name="l01585"></a>01585
+<a name="l01586"></a>01586 <span class="comment">// =============================================================================================</span>
+<a name="l01587"></a>01587
+<a name="l01588"></a>01588 <a class="code" href="XMP__Const_8h.html#5912613564f80e17eb10acef9236f70a">XMPMetaRef</a> xmpRef; <span class="comment">// *** Should be private, see below.</span>
+<a name="l01589"></a>01589
+<a name="l01590"></a>01590 <span class="keyword">private</span>:
+<a name="l01591"></a>01591
+<a name="l01592"></a>01592 <span class="preprocessor">#if 0 // *** VS.Net and gcc seem to not handle the friend declarations properly.</span>
+<a name="l01593"></a>01593 <span class="preprocessor"></span> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classTXMPIterator.html">TXMPIterator</a> &lt;class tStringObj&gt;;
+<a name="l01594"></a>01594 <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classTXMPUtils.html">TXMPUtils</a> &lt;class tStringObj&gt;;
+<a name="l01595"></a>01595 <span class="preprocessor">#endif</span>
+<a name="l01596"></a>01596 <span class="preprocessor"></span>
+<a name="l01597"></a>01597 }; <span class="comment">// class TXMPMeta</span>
+<a name="l01598"></a>01598
+<a name="l01599"></a>01599 <span class="preprocessor">#endif // __TXMPMeta_hpp__</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu May 3 14:54:57 2007 for Adobe XMP Toolkit by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address>
+</body>
+</html>
diff --git a/docs/XMPToolkit/TXMPMeta_8hpp.html b/docs/XMPToolkit/TXMPMeta_8hpp.html
new file mode 100644
index 0000000..162e5eb
--- /dev/null
+++ b/docs/XMPToolkit/TXMPMeta_8hpp.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Adobe XMP Toolkit: TXMPMeta.hpp File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.1 -->
+<div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li id="current"><a href="files.html"><span>Files</span></a></li>
+ </ul></div>
+<h1>TXMPMeta.hpp File Reference</h1>Template class for the XMP Toolkit core services. <a href="#_details">More...</a>
+<p>
+
+<p>
+<a href="TXMPMeta_8hpp-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Template class for the XMP Toolkit core services. <a href="classTXMPMeta.html#_details">More...</a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Template class for the XMP Toolkit core services.
+<p>
+<a class="el" href="classTXMPMeta.html">TXMPMeta</a> is the template class providing the core services of the XMP Toolkit. It should be instantiated with a string class such as <code>std::string</code>. Please read the general toolkit usage notes for information about the overall architecture of the XMP API. <hr size="1"><address style="align: right;"><small>Generated on Thu May 3 14:54:58 2007 for Adobe XMP Toolkit by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address>
+</body>
+</html>
diff --git a/docs/XMPToolkit/TXMPMeta_8incl__cpp.html b/docs/XMPToolkit/TXMPMeta_8incl__cpp.html
new file mode 100644
index 0000000..c0b862b
--- /dev/null
+++ b/docs/XMPToolkit/TXMPMeta_8incl__cpp.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Adobe XMP Toolkit: TXMPMeta.incl_cpp File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.1 -->
+<div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li id="current"><a href="files.html"><span>Files</span></a></li>
+ </ul></div>
+<h1>TXMPMeta.incl_cpp File Reference</h1>The implementation of the <a class="el" href="classTXMPMeta.html">TXMPMeta</a> template class. <a href="#_details">More...</a>
+<p>
+<code>#include &quot;XMP.hpp&quot;</code><br>
+<code>#include &quot;client-glue/WXMP_Common.hpp&quot;</code><br>
+<code>#include &quot;client-glue/WXMPMeta.hpp&quot;</code><br>
+
+<p>
+Include dependency graph for TXMPMeta.incl_cpp:<p><center><img src="TXMPMeta_8incl__cpp__incl.png" border="0" usemap="#TXMPMeta.incl_cpp_map" alt=""></center>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The implementation of the <a class="el" href="classTXMPMeta.html">TXMPMeta</a> template class.
+<p>
+<hr size="1"><address style="align: right;"><small>Generated on Thu May 3 14:54:58 2007 for Adobe XMP Toolkit by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address>
+</body>
+</html>
diff --git a/docs/XMPToolkit/TXMPMeta_8incl__cpp__incl.png b/docs/XMPToolkit/TXMPMeta_8incl__cpp__incl.png
new file mode 100644
index 0000000..f453f8c
--- /dev/null
+++ b/docs/XMPToolkit/TXMPMeta_8incl__cpp__incl.png
Binary files differ
diff --git a/docs/XMPToolkit/TXMPUtils_8hpp-source.html b/docs/XMPToolkit/TXMPUtils_8hpp-source.html
new file mode 100644
index 0000000..5b4777c
--- /dev/null
+++ b/docs/XMPToolkit/TXMPUtils_8hpp-source.html
@@ -0,0 +1,360 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Adobe XMP Toolkit: TXMPUtils.hpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.1 -->
+<div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li id="current"><a href="files.html"><span>Files</span></a></li>
+ </ul></div>
+<h1>TXMPUtils.hpp</h1><a href="TXMPUtils_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef __TXMPUtils_hpp__</span>
+<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define __TXMPUtils_hpp__ 1</span>
+<a name="l00003"></a>00003 <span class="preprocessor"></span>
+<a name="l00004"></a>00004 <span class="preprocessor">#if ( ! __XMP_hpp__ )</span>
+<a name="l00005"></a>00005 <span class="preprocessor"></span><span class="preprocessor"> #error "Do not directly include, use XMP.hpp"</span>
+<a name="l00006"></a>00006 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
+<a name="l00007"></a>00007 <span class="preprocessor"></span>
+<a name="l00008"></a>00008 <span class="comment">// =================================================================================================</span>
+<a name="l00009"></a>00009 <span class="comment">// ADOBE SYSTEMS INCORPORATED</span>
+<a name="l00010"></a>00010 <span class="comment">// Copyright 2002-2007 Adobe Systems Incorporated</span>
+<a name="l00011"></a>00011 <span class="comment">// All Rights Reserved</span>
+<a name="l00012"></a>00012 <span class="comment">//</span>
+<a name="l00013"></a>00013 <span class="comment">// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms</span>
+<a name="l00014"></a>00014 <span class="comment">// of the Adobe license agreement accompanying it.</span>
+<a name="l00015"></a>00015 <span class="comment">// =================================================================================================</span>
+<a name="l00016"></a>00016
+<a name="l00017"></a>00017 <span class="comment">// ================================================================================================</span>
+<a name="l00024"></a>00024 <span class="comment"></span><span class="comment">// ================================================================================================</span>
+<a name="l00025"></a>00025
+<a name="l00026"></a>00026 <span class="comment">// ================================================================================================</span>
+<a name="l00041"></a>00041 <span class="comment"></span><span class="comment">// ================================================================================================</span>
+<a name="l00042"></a>00042
+<a name="l00043"></a>00043 <span class="keyword">template</span> &lt;<span class="keyword">class</span> tStringObj&gt;
+<a name="l00044"></a><a class="code" href="classTXMPUtils.html">00044</a> <span class="keyword">class </span><a class="code" href="classTXMPUtils.html">TXMPUtils</a> {
+<a name="l00045"></a>00045
+<a name="l00046"></a>00046 <span class="keyword">public</span>:
+<a name="l00047"></a>00047
+<a name="l00048"></a>00048 <span class="comment">// =============================================================================================</span>
+<a name="l00049"></a>00049 <span class="comment">// No constructors or destructor declared or needed</span>
+<a name="l00050"></a>00050 <span class="comment">// ================================================</span>
+<a name="l00051"></a>00051
+<a name="l00052"></a>00052 <span class="comment">// =============================================================================================</span>
+<a name="l00053"></a>00053 <span class="comment">// =============================================================================================</span>
+<a name="l00054"></a>00054
+<a name="l00055"></a>00055 <span class="comment">// ============================================================================================</span>
+<a name="l00087"></a>00087 <span class="comment"></span>
+<a name="l00088"></a>00088 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00103"></a>00103 <span class="comment"></span>
+<a name="l00104"></a>00104 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00105"></a>00105 <a class="code" href="classTXMPUtils.html#47fa195aa2e1457aa1f74f7e1ed06da6">ComposeArrayItemPath</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l00106"></a>00106 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> arrayName,
+<a name="l00107"></a>00107 <a class="code" href="XMP__Const_8h.html#00e9d9a76c144421105a4c2742203315">XMP_Index</a> itemIndex,
+<a name="l00108"></a>00108 tStringObj * fullPath );
+<a name="l00109"></a>00109
+<a name="l00110"></a>00110 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00126"></a>00126 <span class="comment"></span>
+<a name="l00127"></a>00127 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00128"></a>00128 <a class="code" href="classTXMPUtils.html#706eb85b8401b8682a01348f7e25ee3d">ComposeStructFieldPath</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l00129"></a>00129 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> structName,
+<a name="l00130"></a>00130 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldNS,
+<a name="l00131"></a>00131 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldName,
+<a name="l00132"></a>00132 tStringObj * fullPath );
+<a name="l00133"></a>00133
+<a name="l00134"></a>00134 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00152"></a>00152 <span class="comment"></span>
+<a name="l00153"></a>00153 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00154"></a>00154 <a class="code" href="classTXMPUtils.html#40ae0ce2065fcb71725e37137884e172">ComposeQualifierPath</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l00155"></a>00155 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName,
+<a name="l00156"></a>00156 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> qualNS,
+<a name="l00157"></a>00157 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> qualName,
+<a name="l00158"></a>00158 tStringObj * fullPath );
+<a name="l00159"></a>00159
+<a name="l00160"></a>00160 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00184"></a>00184 <span class="comment"></span>
+<a name="l00185"></a>00185 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00186"></a>00186 <a class="code" href="classTXMPUtils.html#e4989e5c199a2a4287ee3ae89b872e69">ComposeLangSelector</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l00187"></a>00187 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> arrayName,
+<a name="l00188"></a>00188 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> langName,
+<a name="l00189"></a>00189 tStringObj * fullPath );
+<a name="l00190"></a>00190
+<a name="l00191"></a>00191 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00194"></a>00194 <span class="comment"></span>
+<a name="l00195"></a>00195 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00196"></a>00196 <a class="code" href="classTXMPUtils.html#e4989e5c199a2a4287ee3ae89b872e69">ComposeLangSelector</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l00197"></a>00197 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> arrayName,
+<a name="l00198"></a>00198 <span class="keyword">const</span> tStringObj &amp; langName,
+<a name="l00199"></a>00199 tStringObj * fullPath );
+<a name="l00200"></a>00200
+<a name="l00201"></a>00201 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00235"></a>00235 <span class="comment"></span>
+<a name="l00236"></a>00236 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00237"></a>00237 <a class="code" href="classTXMPUtils.html#458f8e8729e2334fe54ca8f691a9db23">ComposeFieldSelector</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l00238"></a>00238 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> arrayName,
+<a name="l00239"></a>00239 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldNS,
+<a name="l00240"></a>00240 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldName,
+<a name="l00241"></a>00241 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldValue,
+<a name="l00242"></a>00242 tStringObj * fullPath );
+<a name="l00243"></a>00243
+<a name="l00244"></a>00244 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00247"></a>00247 <span class="comment"></span>
+<a name="l00248"></a>00248 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00249"></a>00249 <a class="code" href="classTXMPUtils.html#458f8e8729e2334fe54ca8f691a9db23">ComposeFieldSelector</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l00250"></a>00250 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> arrayName,
+<a name="l00251"></a>00251 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldNS,
+<a name="l00252"></a>00252 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldName,
+<a name="l00253"></a>00253 <span class="keyword">const</span> tStringObj &amp; fieldValue,
+<a name="l00254"></a>00254 tStringObj * fullPath );
+<a name="l00255"></a>00255
+<a name="l00257"></a>00257
+<a name="l00258"></a>00258 <span class="comment">// =============================================================================================</span>
+<a name="l00259"></a>00259 <span class="comment">// =============================================================================================</span>
+<a name="l00260"></a>00260
+<a name="l00261"></a>00261 <span class="comment">// ============================================================================================</span>
+<a name="l00264"></a>00264 <span class="comment"></span>
+<a name="l00265"></a>00265 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00272"></a>00272 <span class="comment"></span>
+<a name="l00273"></a>00273 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00274"></a>00274 <a class="code" href="classTXMPUtils.html#509691eb270988de6a770c9c8304ab6b">ConvertFromBool</a> ( <span class="keywordtype">bool</span> binValue,
+<a name="l00275"></a>00275 tStringObj * strValue );
+<a name="l00276"></a>00276
+<a name="l00277"></a>00277 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00285"></a>00285 <span class="comment"></span>
+<a name="l00286"></a>00286 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00287"></a>00287 <a class="code" href="classTXMPUtils.html#eec45b4d1a26717290105c9f4e8b4235">ConvertFromInt</a> ( <span class="keywordtype">long</span> binValue,
+<a name="l00288"></a>00288 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> format,
+<a name="l00289"></a>00289 tStringObj * strValue );
+<a name="l00290"></a>00290
+<a name="l00291"></a>00291 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00292"></a>00292 ConvertFromInt64 ( <span class="keywordtype">long</span> <span class="keywordtype">long</span> binValue,
+<a name="l00293"></a>00293 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> format,
+<a name="l00294"></a>00294 tStringObj * strValue );
+<a name="l00295"></a>00295
+<a name="l00296"></a>00296 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00304"></a>00304 <span class="comment"></span>
+<a name="l00305"></a>00305 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00306"></a>00306 <a class="code" href="classTXMPUtils.html#e67ef3931836432b7e574832f0610ed0">ConvertFromFloat</a> ( <span class="keywordtype">double</span> binValue,
+<a name="l00307"></a>00307 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> format,
+<a name="l00308"></a>00308 tStringObj * strValue );
+<a name="l00309"></a>00309
+<a name="l00310"></a>00310 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00339"></a>00339 <span class="comment"></span>
+<a name="l00340"></a>00340 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00341"></a>00341 <a class="code" href="classTXMPUtils.html#6146a522a3974b4088d6e8241e9cd223">ConvertFromDate</a> ( <span class="keyword">const</span> <a class="code" href="structXMP__DateTime.html">XMP_DateTime</a> &amp; binValue,
+<a name="l00342"></a>00342 tStringObj * strValue );
+<a name="l00343"></a>00343
+<a name="l00344"></a>00344 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00352"></a>00352 <span class="comment"></span>
+<a name="l00353"></a>00353 <span class="keyword">static</span> <span class="keywordtype">bool</span>
+<a name="l00354"></a>00354 <a class="code" href="classTXMPUtils.html#aaaaadb23f4089daa795f50cba4f405c">ConvertToBool</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> strValue );
+<a name="l00355"></a>00355
+<a name="l00356"></a>00356 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00359"></a>00359 <span class="comment"></span>
+<a name="l00360"></a>00360 <span class="keyword">static</span> <span class="keywordtype">bool</span>
+<a name="l00361"></a>00361 <a class="code" href="classTXMPUtils.html#aaaaadb23f4089daa795f50cba4f405c">ConvertToBool</a> ( <span class="keyword">const</span> tStringObj &amp; strValue );
+<a name="l00362"></a>00362
+<a name="l00363"></a>00363 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00369"></a>00369 <span class="comment"></span>
+<a name="l00370"></a>00370 <span class="keyword">static</span> <span class="keywordtype">long</span>
+<a name="l00371"></a>00371 <a class="code" href="classTXMPUtils.html#dfd9d1c522377d5db4ad667a7973ba00">ConvertToInt</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> strValue );
+<a name="l00372"></a>00372
+<a name="l00373"></a>00373 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00376"></a>00376 <span class="comment"></span>
+<a name="l00377"></a>00377 <span class="keyword">static</span> <span class="keywordtype">long</span>
+<a name="l00378"></a>00378 <a class="code" href="classTXMPUtils.html#dfd9d1c522377d5db4ad667a7973ba00">ConvertToInt</a> ( <span class="keyword">const</span> tStringObj &amp; strValue );
+<a name="l00379"></a>00379
+<a name="l00380"></a>00380 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00386"></a>00386 <span class="comment"></span>
+<a name="l00387"></a>00387 <span class="keyword">static</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span>
+<a name="l00388"></a>00388 <a class="code" href="classTXMPUtils.html#be5d2dcc03c5442202203bba5ca7b172">ConvertToInt64</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> strValue );
+<a name="l00389"></a>00389
+<a name="l00390"></a>00390 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00393"></a>00393 <span class="comment"></span>
+<a name="l00394"></a>00394 <span class="keyword">static</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span>
+<a name="l00395"></a>00395 <a class="code" href="classTXMPUtils.html#be5d2dcc03c5442202203bba5ca7b172">ConvertToInt64</a> ( <span class="keyword">const</span> tStringObj &amp; strValue );
+<a name="l00396"></a>00396
+<a name="l00397"></a>00397 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00403"></a>00403 <span class="comment"></span>
+<a name="l00404"></a>00404 <span class="keyword">static</span> <span class="keywordtype">double</span>
+<a name="l00405"></a>00405 <a class="code" href="classTXMPUtils.html#8a507b006286460814e0486c622d828c">ConvertToFloat</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> strValue );
+<a name="l00406"></a>00406
+<a name="l00407"></a>00407 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00410"></a>00410 <span class="comment"></span>
+<a name="l00411"></a>00411 <span class="keyword">static</span> <span class="keywordtype">double</span>
+<a name="l00412"></a>00412 <a class="code" href="classTXMPUtils.html#8a507b006286460814e0486c622d828c">ConvertToFloat</a> ( <span class="keyword">const</span> tStringObj &amp; strValue );
+<a name="l00413"></a>00413
+<a name="l00414"></a>00414 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00444"></a>00444 <span class="comment"></span>
+<a name="l00445"></a>00445 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00446"></a>00446 <a class="code" href="classTXMPUtils.html#60d33e6ce30286028acca47b2b6e7a0b">ConvertToDate</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> strValue,
+<a name="l00447"></a>00447 <a class="code" href="structXMP__DateTime.html">XMP_DateTime</a> * binValue );
+<a name="l00448"></a>00448
+<a name="l00449"></a>00449 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00452"></a>00452 <span class="comment"></span>
+<a name="l00453"></a>00453 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00454"></a>00454 <a class="code" href="classTXMPUtils.html#60d33e6ce30286028acca47b2b6e7a0b">ConvertToDate</a> ( <span class="keyword">const</span> tStringObj &amp; strValue,
+<a name="l00455"></a>00455 <a class="code" href="structXMP__DateTime.html">XMP_DateTime</a> * binValue );
+<a name="l00456"></a>00456
+<a name="l00458"></a>00458
+<a name="l00459"></a>00459 <span class="comment">// =============================================================================================</span>
+<a name="l00460"></a>00460 <span class="comment">// =============================================================================================</span>
+<a name="l00461"></a>00461
+<a name="l00462"></a>00462 <span class="comment">// ============================================================================================</span>
+<a name="l00465"></a>00465 <span class="comment"></span>
+<a name="l00466"></a>00466 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00472"></a>00472 <span class="comment"></span>
+<a name="l00473"></a>00473 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00474"></a>00474 <a class="code" href="classTXMPUtils.html#c83f0b963ea64d7eee0b481e15a8439c">CurrentDateTime</a> ( <a class="code" href="structXMP__DateTime.html">XMP_DateTime</a> * time );
+<a name="l00475"></a>00475
+<a name="l00476"></a>00476 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00481"></a>00481 <span class="comment"></span>
+<a name="l00482"></a>00482 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00483"></a>00483 <a class="code" href="classTXMPUtils.html#96bcc45febac55f6c49951815b7de2ef">SetTimeZone</a> ( <a class="code" href="structXMP__DateTime.html">XMP_DateTime</a> * time );
+<a name="l00484"></a>00484
+<a name="l00485"></a>00485 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00490"></a>00490 <span class="comment"></span>
+<a name="l00491"></a>00491 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00492"></a>00492 <a class="code" href="classTXMPUtils.html#bbd4d691c83287ea2fc6b1e33e5858b8">ConvertToUTCTime</a> ( <a class="code" href="structXMP__DateTime.html">XMP_DateTime</a> * time );
+<a name="l00493"></a>00493
+<a name="l00494"></a>00494 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00499"></a>00499 <span class="comment"></span>
+<a name="l00500"></a>00500 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00501"></a>00501 <a class="code" href="classTXMPUtils.html#61852aaba494c8fbad5a6c0c4caf21f5">ConvertToLocalTime</a> ( <a class="code" href="structXMP__DateTime.html">XMP_DateTime</a> * time );
+<a name="l00502"></a>00502
+<a name="l00503"></a>00503 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00514"></a>00514 <span class="comment"></span>
+<a name="l00515"></a>00515 <span class="keyword">static</span> <span class="keywordtype">int</span>
+<a name="l00516"></a>00516 <a class="code" href="classTXMPUtils.html#9fc7f1771032f59f9020aeda4f91991d">CompareDateTime</a> ( <span class="keyword">const</span> <a class="code" href="structXMP__DateTime.html">XMP_DateTime</a> &amp; left,
+<a name="l00517"></a>00517 <span class="keyword">const</span> <a class="code" href="structXMP__DateTime.html">XMP_DateTime</a> &amp; right );
+<a name="l00518"></a>00518
+<a name="l00520"></a>00520
+<a name="l00521"></a>00521 <span class="comment">// =============================================================================================</span>
+<a name="l00522"></a>00522 <span class="comment">// =============================================================================================</span>
+<a name="l00523"></a>00523
+<a name="l00524"></a>00524 <span class="comment">// ============================================================================================</span>
+<a name="l00527"></a>00527 <span class="comment"></span>
+<a name="l00528"></a>00528 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00536"></a>00536 <span class="comment"></span>
+<a name="l00537"></a>00537 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00538"></a>00538 <a class="code" href="classTXMPUtils.html#ef3b23bbc152480f699e269620ecad4a">EncodeToBase64</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> rawStr,
+<a name="l00539"></a>00539 <a class="code" href="XMP__Const_8h.html#9f7dcc184f901c713274edfdac5bcc9a">XMP_StringLen</a> rawLen,
+<a name="l00540"></a>00540 tStringObj * encodedStr );
+<a name="l00541"></a>00541
+<a name="l00542"></a>00542 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00545"></a>00545 <span class="comment"></span>
+<a name="l00546"></a>00546 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00547"></a>00547 <a class="code" href="classTXMPUtils.html#ef3b23bbc152480f699e269620ecad4a">EncodeToBase64</a> ( <span class="keyword">const</span> tStringObj &amp; rawStr,
+<a name="l00548"></a>00548 tStringObj * encodedStr );
+<a name="l00549"></a>00549
+<a name="l00550"></a>00550 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00558"></a>00558 <span class="comment"></span>
+<a name="l00559"></a>00559 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00560"></a>00560 <a class="code" href="classTXMPUtils.html#e5bdd91c0c3ee9262dc0a8b9f591b921">DecodeFromBase64</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> encodedStr,
+<a name="l00561"></a>00561 <a class="code" href="XMP__Const_8h.html#9f7dcc184f901c713274edfdac5bcc9a">XMP_StringLen</a> encodedLen,
+<a name="l00562"></a>00562 tStringObj * rawStr );
+<a name="l00563"></a>00563
+<a name="l00564"></a>00564 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00567"></a>00567 <span class="comment"></span>
+<a name="l00568"></a>00568 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00569"></a>00569 <a class="code" href="classTXMPUtils.html#e5bdd91c0c3ee9262dc0a8b9f591b921">DecodeFromBase64</a> ( <span class="keyword">const</span> tStringObj &amp; encodedStr,
+<a name="l00570"></a>00570 tStringObj * rawStr );
+<a name="l00571"></a>00571
+<a name="l00573"></a>00573
+<a name="l00574"></a>00574 <span class="comment">// =============================================================================================</span>
+<a name="l00575"></a>00575 <span class="comment">// =============================================================================================</span>
+<a name="l00576"></a>00576
+<a name="l00577"></a>00577 <span class="comment">// ============================================================================================</span>
+<a name="l00582"></a>00582 <span class="comment"></span>
+<a name="l00583"></a>00583 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00595"></a>00595 <span class="comment"></span>
+<a name="l00596"></a>00596 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00597"></a>00597 <a class="code" href="classTXMPUtils.html#6001b4ff54c60fdf0c40e6b78a5c457a">PackageForJPEG</a> ( <span class="keyword">const</span> <a class="code" href="classTXMPMeta.html">TXMPMeta&lt;tStringObj&gt;</a> &amp; xmpObj,
+<a name="l00598"></a>00598 tStringObj * standardXMP,
+<a name="l00599"></a>00599 tStringObj * extendedXMP,
+<a name="l00600"></a>00600 tStringObj * extendedDigest );
+<a name="l00601"></a>00601
+<a name="l00602"></a>00602 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00608"></a>00608 <span class="comment"></span>
+<a name="l00609"></a>00609 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00610"></a>00610 <a class="code" href="classTXMPUtils.html#6187cd5fef0eccecac6805d4114dcd2e">MergeFromJPEG</a> ( <a class="code" href="classTXMPMeta.html">TXMPMeta&lt;tStringObj&gt;</a> * fullXMP,
+<a name="l00611"></a>00611 <span class="keyword">const</span> <a class="code" href="classTXMPMeta.html">TXMPMeta&lt;tStringObj&gt;</a> &amp; extendedXMP );
+<a name="l00612"></a>00612
+<a name="l00614"></a>00614
+<a name="l00615"></a>00615 <span class="comment">// =============================================================================================</span>
+<a name="l00616"></a>00616 <span class="comment">// =============================================================================================</span>
+<a name="l00617"></a>00617
+<a name="l00618"></a>00618 <span class="comment">// ============================================================================================</span>
+<a name="l00622"></a>00622 <span class="comment"></span>
+<a name="l00623"></a>00623 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00644"></a>00644 <span class="comment"></span>
+<a name="l00645"></a>00645 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00646"></a>00646 <a class="code" href="classTXMPUtils.html#d7e1aa7928252fb88a24fb5c3aef22ba">CatenateArrayItems</a> ( <span class="keyword">const</span> <a class="code" href="classTXMPMeta.html">TXMPMeta&lt;tStringObj&gt;</a> &amp; xmpObj,
+<a name="l00647"></a>00647 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l00648"></a>00648 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> arrayName,
+<a name="l00649"></a>00649 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> separator,
+<a name="l00650"></a>00650 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> quotes,
+<a name="l00651"></a>00651 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options,
+<a name="l00652"></a>00652 tStringObj * catedStr );
+<a name="l00653"></a>00653
+<a name="l00654"></a>00654 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00669"></a>00669 <span class="comment"></span>
+<a name="l00670"></a>00670 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00671"></a>00671 <a class="code" href="classTXMPUtils.html#66c5ddee47aa36ed906353f94ca18d2e">SeparateArrayItems</a> ( <a class="code" href="classTXMPMeta.html">TXMPMeta&lt;tStringObj&gt;</a> * xmpObj,
+<a name="l00672"></a>00672 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l00673"></a>00673 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> arrayName,
+<a name="l00674"></a>00674 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options,
+<a name="l00675"></a>00675 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> catedStr );
+<a name="l00676"></a>00676
+<a name="l00677"></a>00677 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00680"></a>00680 <span class="comment"></span>
+<a name="l00681"></a>00681 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00682"></a>00682 <a class="code" href="classTXMPUtils.html#66c5ddee47aa36ed906353f94ca18d2e">SeparateArrayItems</a> ( <a class="code" href="classTXMPMeta.html">TXMPMeta&lt;tStringObj&gt;</a> * xmpObj,
+<a name="l00683"></a>00683 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS,
+<a name="l00684"></a>00684 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> arrayName,
+<a name="l00685"></a>00685 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options,
+<a name="l00686"></a>00686 <span class="keyword">const</span> tStringObj &amp; catedStr );
+<a name="l00687"></a>00687
+<a name="l00688"></a>00688 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00719"></a>00719 <span class="comment"></span>
+<a name="l00720"></a>00720 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00721"></a>00721 <a class="code" href="classTXMPUtils.html#40c645803530662e08d042b4b7c6190d">RemoveProperties</a> ( <a class="code" href="classTXMPMeta.html">TXMPMeta&lt;tStringObj&gt;</a> * xmpObj,
+<a name="l00722"></a>00722 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS = 0,
+<a name="l00723"></a>00723 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName = 0,
+<a name="l00724"></a>00724 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options = 0 );
+<a name="l00725"></a>00725
+<a name="l00726"></a>00726 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00800"></a>00800 <span class="comment"></span>
+<a name="l00801"></a>00801 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00802"></a>00802 <a class="code" href="classTXMPUtils.html#4795244ffcbda927800f789b0e40c262">AppendProperties</a> ( <span class="keyword">const</span> <a class="code" href="classTXMPMeta.html">TXMPMeta&lt;tStringObj&gt;</a> &amp; source,
+<a name="l00803"></a>00803 <a class="code" href="classTXMPMeta.html">TXMPMeta&lt;tStringObj&gt;</a> * dest,
+<a name="l00804"></a>00804 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options = 0 );
+<a name="l00805"></a>00805
+<a name="l00806"></a>00806 <span class="comment">// --------------------------------------------------------------------------------------------</span>
+<a name="l00826"></a>00826 <span class="comment"></span>
+<a name="l00827"></a>00827 <span class="keyword">static</span> <span class="keywordtype">void</span>
+<a name="l00828"></a>00828 <a class="code" href="classTXMPUtils.html#a17838f062e5414bc0929f67ac94a3aa">DuplicateSubtree</a> ( <span class="keyword">const</span> <a class="code" href="classTXMPMeta.html">TXMPMeta&lt;tStringObj&gt;</a> &amp; source,
+<a name="l00829"></a>00829 <a class="code" href="classTXMPMeta.html">TXMPMeta&lt;tStringObj&gt;</a> * dest,
+<a name="l00830"></a>00830 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> sourceNS,
+<a name="l00831"></a>00831 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> sourceRoot,
+<a name="l00832"></a>00832 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> destNS = 0,
+<a name="l00833"></a>00833 <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> destRoot = 0,
+<a name="l00834"></a>00834 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options = 0 );
+<a name="l00835"></a>00835
+<a name="l00836"></a>00836
+<a name="l00838"></a>00838
+<a name="l00839"></a>00839 <span class="comment">// =============================================================================================</span>
+<a name="l00840"></a>00840
+<a name="l00841"></a>00841 }; <span class="comment">// class TXMPUtils</span>
+<a name="l00842"></a>00842
+<a name="l00843"></a>00843 <span class="comment">// =================================================================================================</span>
+<a name="l00844"></a>00844
+<a name="l00845"></a>00845 <span class="preprocessor">#endif // __TXMPUtils_hpp__</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu May 3 14:54:57 2007 for Adobe XMP Toolkit by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address>
+</body>
+</html>
diff --git a/docs/XMPToolkit/TXMPUtils_8hpp.html b/docs/XMPToolkit/TXMPUtils_8hpp.html
new file mode 100644
index 0000000..d0f1cea
--- /dev/null
+++ b/docs/XMPToolkit/TXMPUtils_8hpp.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Adobe XMP Toolkit: TXMPUtils.hpp File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.1 -->
+<div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li id="current"><a href="files.html"><span>Files</span></a></li>
+ </ul></div>
+<h1>TXMPUtils.hpp File Reference</h1>Template class for the XMP Toolkit utility services. <a href="#_details">More...</a>
+<p>
+
+<p>
+<a href="TXMPUtils_8hpp-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">class &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPUtils.html">TXMPUtils&lt; tStringObj &gt;</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Template class for the XMP Toolkit utility services. <a href="classTXMPUtils.html#_details">More...</a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Template class for the XMP Toolkit utility services.
+<p>
+<code><a class="el" href="classTXMPUtils.html">TXMPUtils</a></code> is the template class providing utility services for the XMP Toolkit. It should be instantiated with a string class such as <code>std::string</code>. Please read the general toolkit usage notes for information about the overall architecture of the XMP API. <hr size="1"><address style="align: right;"><small>Generated on Thu May 3 14:54:58 2007 for Adobe XMP Toolkit by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address>
+</body>
+</html>
diff --git a/docs/XMPToolkit/TXMPUtils_8incl__cpp.html b/docs/XMPToolkit/TXMPUtils_8incl__cpp.html
new file mode 100644
index 0000000..40480d0
--- /dev/null
+++ b/docs/XMPToolkit/TXMPUtils_8incl__cpp.html
@@ -0,0 +1,33 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Adobe XMP Toolkit: TXMPUtils.incl_cpp File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.1 -->
+<div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li id="current"><a href="files.html"><span>Files</span></a></li>
+ </ul></div>
+<h1>TXMPUtils.incl_cpp File Reference</h1>The implementation of the <a class="el" href="classTXMPUtils.html">TXMPUtils</a> template class. <a href="#_details">More...</a>
+<p>
+<code>#include &quot;XMP.hpp&quot;</code><br>
+<code>#include &quot;client-glue/WXMP_Common.hpp&quot;</code><br>
+<code>#include &quot;client-glue/WXMPUtils.hpp&quot;</code><br>
+
+<p>
+Include dependency graph for TXMPUtils.incl_cpp:<p><center><img src="TXMPUtils_8incl__cpp__incl.png" border="0" usemap="#TXMPUtils.incl_cpp_map" alt=""></center>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+The implementation of the <a class="el" href="classTXMPUtils.html">TXMPUtils</a> template class.
+<p>
+<hr size="1"><address style="align: right;"><small>Generated on Thu May 3 14:54:58 2007 for Adobe XMP Toolkit by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address>
+</body>
+</html>
diff --git a/docs/XMPToolkit/TXMPUtils_8incl__cpp__incl.png b/docs/XMPToolkit/TXMPUtils_8incl__cpp__incl.png
new file mode 100644
index 0000000..fc3f99c
--- /dev/null
+++ b/docs/XMPToolkit/TXMPUtils_8incl__cpp__incl.png
Binary files differ
diff --git a/docs/XMPToolkit/XMP_8incl__cpp.html b/docs/XMPToolkit/XMP_8incl__cpp.html
new file mode 100644
index 0000000..767a855
--- /dev/null
+++ b/docs/XMPToolkit/XMP_8incl__cpp.html
@@ -0,0 +1,35 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Adobe XMP Toolkit: XMP.incl_cpp File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.1 -->
+<div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li id="current"><a href="files.html"><span>Files</span></a></li>
+ </ul></div>
+<h1>XMP.incl_cpp File Reference</h1>Overall client glue file for the XMP toolkit. <a href="#_details">More...</a>
+<p>
+<code>#include &quot;XMP.hpp&quot;</code><br>
+
+<p>
+Include dependency graph for XMP.incl_cpp:<p><center><img src="XMP_8incl__cpp__incl.png" border="0" usemap="#XMP.incl_cpp_map" alt=""></center>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Overall client glue file for the XMP toolkit.
+<p>
+This is an overall client source file of XMP toolkit glue, the only XMP-specific one that clients should build in projects. This ensures that all of the client-side glue code for the XMP toolkit gets compiled.<p>
+You cannot compile this file directly, because the template's string type must be declared and only the client can do that. Instead, include this in some other source file. For example, to use <code>std::string</code> you only need these two lines:<p>
+<div class="fragment"><pre class="fragment"><span class="preprocessor"> #include &lt;string&gt;</span>
+<span class="preprocessor"> #include "<a class="code" href="XMP_8incl__cpp.html">XMP.incl_cpp</a>"</span>
+</pre></div> <hr size="1"><address style="align: right;"><small>Generated on Thu May 3 14:54:58 2007 for Adobe XMP Toolkit by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address>
+</body>
+</html>
diff --git a/docs/XMPToolkit/XMP_8incl__cpp__incl.png b/docs/XMPToolkit/XMP_8incl__cpp__incl.png
new file mode 100644
index 0000000..26f5616
--- /dev/null
+++ b/docs/XMPToolkit/XMP_8incl__cpp__incl.png
Binary files differ
diff --git a/docs/XMPToolkit/XMP__Const_8h-source.html b/docs/XMPToolkit/XMP__Const_8h-source.html
new file mode 100644
index 0000000..be0823f
--- /dev/null
+++ b/docs/XMPToolkit/XMP__Const_8h-source.html
@@ -0,0 +1,661 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Adobe XMP Toolkit: XMP_Const.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.1 -->
+<div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li id="current"><a href="files.html"><span>Files</span></a></li>
+ </ul></div>
+<h1>XMP_Const.h</h1><a href="XMP__Const_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef __XMP_Const_h__</span>
+<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define __XMP_Const_h__ 1</span>
+<a name="l00003"></a>00003 <span class="preprocessor"></span>
+<a name="l00004"></a>00004 <span class="comment">/* --------------------------------------------------------------------------------------------- */</span>
+<a name="l00005"></a>00005 <span class="comment">/* ** IMPORTANT ** This file must be usable by strict ANSI C compilers. No "//" comments, etc. */</span>
+<a name="l00006"></a>00006 <span class="comment">/* --------------------------------------------------------------------------------------------- */</span>
+<a name="l00007"></a>00007
+<a name="l00008"></a>00008 <span class="comment">/*</span>
+<a name="l00009"></a>00009 <span class="comment">// =================================================================================================</span>
+<a name="l00010"></a>00010 <span class="comment">// Copyright 2002-2007 Adobe Systems Incorporated</span>
+<a name="l00011"></a>00011 <span class="comment">// All Rights Reserved.</span>
+<a name="l00012"></a>00012 <span class="comment">//</span>
+<a name="l00013"></a>00013 <span class="comment">// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms</span>
+<a name="l00014"></a>00014 <span class="comment">// of the Adobe license agreement accompanying it.</span>
+<a name="l00015"></a>00015 <span class="comment">// =================================================================================================</span>
+<a name="l00016"></a>00016 <span class="comment">*/</span>
+<a name="l00017"></a>00017
+<a name="l00018"></a>00018 <span class="preprocessor">#include "XMP_Environment.h"</span>
+<a name="l00019"></a>00019
+<a name="l00020"></a>00020 <span class="preprocessor"> #include &lt;stddef.h&gt;</span>
+<a name="l00021"></a>00021
+<a name="l00022"></a>00022 <span class="preprocessor">#if XMP_MacBuild </span><span class="comment">/* ! No stdint.h on Windows and some UNIXes. */</span>
+<a name="l00023"></a>00023 <span class="preprocessor"> #include &lt;stdint.h&gt;</span>
+<a name="l00024"></a>00024 <span class="preprocessor">#endif</span>
+<a name="l00025"></a>00025 <span class="preprocessor"></span>
+<a name="l00026"></a>00026 <span class="preprocessor">#if __cplusplus</span>
+<a name="l00027"></a>00027 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
+<a name="l00028"></a>00028 <span class="preprocessor">#endif</span>
+<a name="l00029"></a>00029 <span class="preprocessor"></span>
+<a name="l00030"></a>00030
+<a name="l00037"></a>00037 <span class="comment">/* ============================================================================================== */</span>
+<a name="l00038"></a>00038 <span class="comment">/* Basic types and constants */</span>
+<a name="l00039"></a>00039 <span class="comment">/* ========================= */</span>
+<a name="l00040"></a>00040
+<a name="l00041"></a>00041 <span class="comment">/* The XMP_... types are used on the off chance that the ..._t types present a problem. In that */</span>
+<a name="l00042"></a>00042 <span class="comment">/* case only the declarations of the XMP_... types needs to change, not all of the uses. These */</span>
+<a name="l00043"></a>00043 <span class="comment">/* types are used where fixed sizes are required in order to have a known ABI for a DLL build. */</span>
+<a name="l00044"></a>00044
+<a name="l00045"></a>00045 <span class="preprocessor">#if XMP_MacBuild</span>
+<a name="l00046"></a>00046 <span class="preprocessor"></span>
+<a name="l00047"></a>00047 <span class="keyword">typedef</span> int8_t XMP_Int8;
+<a name="l00048"></a>00048 <span class="keyword">typedef</span> int16_t XMP_Int16;
+<a name="l00049"></a>00049 <span class="keyword">typedef</span> int32_t XMP_Int32;
+<a name="l00050"></a>00050 <span class="keyword">typedef</span> int64_t XMP_Int64;
+<a name="l00051"></a>00051
+<a name="l00052"></a>00052 <span class="keyword">typedef</span> uint8_t XMP_Uns8;
+<a name="l00053"></a>00053 <span class="keyword">typedef</span> uint16_t XMP_Uns16;
+<a name="l00054"></a>00054 <span class="keyword">typedef</span> uint32_t XMP_Uns32;
+<a name="l00055"></a>00055 <span class="keyword">typedef</span> uint64_t XMP_Uns64;
+<a name="l00056"></a>00056
+<a name="l00057"></a>00057 <span class="preprocessor">#else</span>
+<a name="l00058"></a>00058 <span class="preprocessor"></span>
+<a name="l00059"></a>00059 <span class="keyword">typedef</span> <span class="keywordtype">signed</span> <span class="keywordtype">char</span> XMP_Int8;
+<a name="l00060"></a>00060 <span class="keyword">typedef</span> <span class="keywordtype">signed</span> <span class="keywordtype">short</span> XMP_Int16;
+<a name="l00061"></a>00061 <span class="keyword">typedef</span> <span class="keywordtype">signed</span> <span class="keywordtype">long</span> XMP_Int32;
+<a name="l00062"></a>00062 <span class="keyword">typedef</span> <span class="keywordtype">signed</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span> XMP_Int64;
+<a name="l00063"></a>00063
+<a name="l00064"></a>00064 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> XMP_Uns8;
+<a name="l00065"></a>00065 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> XMP_Uns16;
+<a name="l00066"></a>00066 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> XMP_Uns32;
+<a name="l00067"></a>00067 <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span> XMP_Uns64;
+<a name="l00068"></a>00068
+<a name="l00069"></a>00069 <span class="preprocessor">#endif</span>
+<a name="l00070"></a>00070 <span class="preprocessor"></span>
+<a name="l00071"></a>00071 <span class="keyword">typedef</span> XMP_Uns8 XMP_Bool;
+<a name="l00072"></a>00072
+<a name="l00073"></a>00073 <span class="comment">/* Typedefs to preserve old, unfortunate spellings: */</span>
+<a name="l00074"></a>00074
+<a name="l00075"></a>00075 <span class="preprocessor">#if 0 </span><span class="comment">/* *** Enable after internal compiles work. */</span>
+<a name="l00076"></a>00076 <span class="keyword">typedef</span> XMP_Int8 XMPInt8;
+<a name="l00077"></a>00077 <span class="keyword">typedef</span> XMP_Int16 XMPInt16;
+<a name="l00078"></a>00078 <span class="keyword">typedef</span> XMP_Int32 XMPInt32;
+<a name="l00079"></a>00079 <span class="keyword">typedef</span> XMP_Int64 XMPInt64;
+<a name="l00080"></a>00080 <span class="keyword">typedef</span> XMP_Uns8 XMPUns8;
+<a name="l00081"></a>00081 <span class="keyword">typedef</span> XMP_Uns16 XMPUns16;
+<a name="l00082"></a>00082 <span class="keyword">typedef</span> XMP_Uns32 XMPUns32;
+<a name="l00083"></a>00083 <span class="keyword">typedef</span> XMP_Uns64 XMPUns64;
+<a name="l00084"></a>00084 <span class="keyword">typedef</span> XMP_Bool XMPBool;
+<a name="l00085"></a>00085 <span class="preprocessor">#endif</span>
+<a name="l00086"></a>00086 <span class="preprocessor"></span>
+<a name="l00095"></a><a class="code" href="XMP__Const_8h.html#5912613564f80e17eb10acef9236f70a">00095</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>__XMPMeta__ * <a class="code" href="XMP__Const_8h.html#5912613564f80e17eb10acef9236f70a">XMPMetaRef</a>;
+<a name="l00096"></a>00096 <span class="keyword">typedef</span> <span class="keyword">struct </span>__XMPIterator__ * XMPIteratorRef;
+<a name="l00097"></a>00097 <span class="keyword">typedef</span> <span class="keyword">struct </span>__XMPFiles__ * XMPFilesRef;
+<a name="l00098"></a>00098
+<a name="l00099"></a>00099 <span class="comment">/* ============================================================================================== */</span>
+<a name="l00100"></a>00100
+<a name="l00132"></a><a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">00132</a> <span class="keyword">typedef</span> <span class="keyword">const</span> <span class="keywordtype">char</span> * <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>; <span class="comment">/* Points to a null terminated UTF-8 string. */</span>
+<a name="l00133"></a><a class="code" href="XMP__Const_8h.html#9f7dcc184f901c713274edfdac5bcc9a">00133</a> <span class="keyword">typedef</span> XMP_Uns32 <a class="code" href="XMP__Const_8h.html#9f7dcc184f901c713274edfdac5bcc9a">XMP_StringLen</a>;
+<a name="l00134"></a><a class="code" href="XMP__Const_8h.html#00e9d9a76c144421105a4c2742203315">00134</a> <span class="keyword">typedef</span> XMP_Int32 <a class="code" href="XMP__Const_8h.html#00e9d9a76c144421105a4c2742203315">XMP_Index</a>; <span class="comment">/* Signed, sometimes -1 is handy. */</span>
+<a name="l00135"></a><a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">00135</a> <span class="keyword">typedef</span> XMP_Uns32 <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a>; <span class="comment">/* Used as 32 individual bits. */</span>
+<a name="l00136"></a>00136
+<a name="l00149"></a><a class="code" href="XMP__Const_8h.html#4c39e0131b0e3d7db66e1cfa82b67141">00149</a> <span class="preprocessor">#define kXMP_TrueStr "True" </span><span class="comment">/* Serialized XMP spellings, not for the type bool. */</span>
+<a name="l00150"></a><a class="code" href="XMP__Const_8h.html#2dc55b533ed63ed7ff0c3be16a97e278">00150</a> <span class="preprocessor">#define kXMP_FalseStr "False"</span>
+<a name="l00151"></a>00151 <span class="preprocessor"></span>
+<a name="l00156"></a>00156 <span class="comment">/* ============================================================================================== */</span>
+<a name="l00157"></a>00157
+<a name="l00190"></a><a class="code" href="structXMP__DateTime.html">00190</a> <span class="keyword">struct </span><a class="code" href="structXMP__DateTime.html">XMP_DateTime</a> {
+<a name="l00191"></a>00191 XMP_Int32 year;
+<a name="l00192"></a>00192 XMP_Int32 month; <span class="comment">/* 1..12 */</span>
+<a name="l00193"></a>00193 XMP_Int32 day; <span class="comment">/* 1..31 */</span>
+<a name="l00194"></a>00194 XMP_Int32 hour; <span class="comment">/* 0..23 */</span>
+<a name="l00195"></a>00195 XMP_Int32 minute; <span class="comment">/* 0..59 */</span>
+<a name="l00196"></a>00196 XMP_Int32 second; <span class="comment">/* 0..59 */</span>
+<a name="l00197"></a>00197 XMP_Int32 tzSign; <span class="comment">/* -1..+1, 0 means UTC, -1 is west, +1 is east. */</span>
+<a name="l00198"></a>00198 XMP_Int32 tzHour; <span class="comment">/* 0..23 */</span>
+<a name="l00199"></a>00199 XMP_Int32 tzMinute; <span class="comment">/* 0..59 */</span>
+<a name="l00200"></a>00200 XMP_Int32 nanoSecond;
+<a name="l00201"></a>00201 };
+<a name="l00202"></a>00202
+<a name="l00203"></a>00203 <span class="keyword">enum</span> { <span class="comment">/* Values used for tzSign field. */</span>
+<a name="l00204"></a>00204 kXMP_TimeWestOfUTC = -1,
+<a name="l00205"></a>00205 kXMP_TimeIsUTC = 0,
+<a name="l00206"></a>00206 kXMP_TimeEastOfUTC = +1
+<a name="l00207"></a>00207 };
+<a name="l00208"></a>00208
+<a name="l00209"></a>00209
+<a name="l00210"></a>00210 <span class="comment">/* ============================================================================================== */</span>
+<a name="l00211"></a>00211 <span class="comment">/* Standard namespace URI constants */</span>
+<a name="l00212"></a>00212 <span class="comment">/* ================================ */</span>
+<a name="l00213"></a>00213
+<a name="l00273"></a><a class="code" href="XMP__Const_8h.html#030875c9dc0861c9251a3374ca14a376">00273</a> <span class="preprocessor">#define kXMP_NS_XMP "http://ns.adobe.com/xap/1.0/"</span>
+<a name="l00274"></a>00274 <span class="preprocessor"></span>
+<a name="l00275"></a><a class="code" href="XMP__Const_8h.html#e52d761e5a4fc8c8499215d2f3d82b90">00275</a> <span class="preprocessor">#define kXMP_NS_XMP_Rights "http://ns.adobe.com/xap/1.0/rights/"</span>
+<a name="l00276"></a><a class="code" href="XMP__Const_8h.html#c67379a9ffa425d0d7976a51c4f2f754">00276</a> <span class="preprocessor"></span><span class="preprocessor">#define kXMP_NS_XMP_MM "http://ns.adobe.com/xap/1.0/mm/"</span>
+<a name="l00277"></a><a class="code" href="XMP__Const_8h.html#308e156c325618acb2172e550929ebee">00277</a> <span class="preprocessor"></span><span class="preprocessor">#define kXMP_NS_XMP_BJ "http://ns.adobe.com/xap/1.0/bj/"</span>
+<a name="l00278"></a>00278 <span class="preprocessor"></span>
+<a name="l00279"></a><a class="code" href="XMP__Const_8h.html#0bcb67d0dd0922504e3da7ca5c40c82a">00279</a> <span class="preprocessor">#define kXMP_NS_PDF "http://ns.adobe.com/pdf/1.3/"</span>
+<a name="l00280"></a><a class="code" href="XMP__Const_8h.html#a1a6f38ebfcdb281c5bf2809859167c7">00280</a> <span class="preprocessor"></span><span class="preprocessor">#define kXMP_NS_Photoshop "http://ns.adobe.com/photoshop/1.0/"</span>
+<a name="l00281"></a>00281 <span class="preprocessor"></span><span class="preprocessor">#define kXMP_NS_PSAlbum "http://ns.adobe.com/album/1.0/"</span>
+<a name="l00282"></a><a class="code" href="XMP__Const_8h.html#d12182e1df1652f56b5eec60c1fcdd8f">00282</a> <span class="preprocessor"></span><span class="preprocessor">#define kXMP_NS_EXIF "http://ns.adobe.com/exif/1.0/"</span>
+<a name="l00283"></a>00283 <span class="preprocessor"></span><span class="preprocessor">#define kXMP_NS_EXIF_Aux "http://ns.adobe.com/exif/1.0/aux/"</span>
+<a name="l00284"></a><a class="code" href="XMP__Const_8h.html#673355818b7b9224e8fec0fbc60ba00c">00284</a> <span class="preprocessor"></span><span class="preprocessor">#define kXMP_NS_TIFF "http://ns.adobe.com/tiff/1.0/"</span>
+<a name="l00285"></a>00285 <span class="preprocessor"></span><span class="preprocessor">#define kXMP_NS_PNG "http://ns.adobe.com/png/1.0/"</span>
+<a name="l00286"></a>00286 <span class="preprocessor"></span><span class="preprocessor">#define kXMP_NS_SWF "http://ns.adobe.com/swf/1.0/"</span>
+<a name="l00287"></a>00287 <span class="preprocessor"></span><span class="preprocessor">#define kXMP_NS_JPEG "http://ns.adobe.com/jpeg/1.0/"</span>
+<a name="l00288"></a>00288 <span class="preprocessor"></span><span class="preprocessor">#define kXMP_NS_JP2K "http://ns.adobe.com/jp2k/1.0/"</span>
+<a name="l00289"></a>00289 <span class="preprocessor"></span><span class="preprocessor">#define kXMP_NS_CameraRaw "http://ns.adobe.com/camera-raw-settings/1.0/"</span>
+<a name="l00290"></a>00290 <span class="preprocessor"></span><span class="preprocessor">#define kXMP_NS_DM "http://ns.adobe.com/xmp/1.0/DynamicMedia/"</span>
+<a name="l00291"></a>00291 <span class="preprocessor"></span><span class="preprocessor">#define kXMP_NS_ASF "http://ns.adobe.com/asf/1.0/"</span>
+<a name="l00292"></a>00292 <span class="preprocessor"></span><span class="preprocessor">#define kXMP_NS_WAV "http://ns.adobe.com/xmp/wav/1.0/"</span>
+<a name="l00293"></a>00293 <span class="preprocessor"></span>
+<a name="l00294"></a>00294 <span class="preprocessor">#define kXMP_NS_XMP_Note "http://ns.adobe.com/xmp/note/"</span>
+<a name="l00295"></a>00295 <span class="preprocessor"></span>
+<a name="l00296"></a>00296 <span class="preprocessor">#define kXMP_NS_AdobeStockPhoto "http://ns.adobe.com/StockPhoto/1.0/"</span>
+<a name="l00297"></a>00297 <span class="preprocessor"></span>
+<a name="l00342"></a><a class="code" href="XMP__Const_8h.html#b466db52a4b85cecfa04710682c1e671">00342</a> <span class="preprocessor">#define kXMP_NS_XMP_IdentifierQual "http://ns.adobe.com/xmp/Identifier/qual/1.0/"</span>
+<a name="l00343"></a><a class="code" href="XMP__Const_8h.html#9618e013619aa92ebc808b62243d2ba8">00343</a> <span class="preprocessor"></span><span class="preprocessor">#define kXMP_NS_XMP_Dimensions "http://ns.adobe.com/xap/1.0/sType/Dimensions#"</span>
+<a name="l00344"></a>00344 <span class="preprocessor"></span><span class="preprocessor">#define kXMP_NS_XMP_Text "http://ns.adobe.com/xap/1.0/t/"</span>
+<a name="l00345"></a>00345 <span class="preprocessor"></span><span class="preprocessor">#define kXMP_NS_XMP_PagedFile "http://ns.adobe.com/xap/1.0/t/pg/"</span>
+<a name="l00346"></a>00346 <span class="preprocessor"></span><span class="preprocessor">#define kXMP_NS_XMP_Graphics "http://ns.adobe.com/xap/1.0/g/"</span>
+<a name="l00347"></a><a class="code" href="XMP__Const_8h.html#935641acc7d01e782ad7a457a7ff338b">00347</a> <span class="preprocessor"></span><span class="preprocessor">#define kXMP_NS_XMP_Image "http://ns.adobe.com/xap/1.0/g/img/"</span>
+<a name="l00348"></a>00348 <span class="preprocessor"></span><span class="preprocessor">#define kXMP_NS_XMP_Font "http://ns.adobe.com/xap/1.0/sType/Font#"</span>
+<a name="l00349"></a><a class="code" href="XMP__Const_8h.html#861613273127156050b456eee11f6b0a">00349</a> <span class="preprocessor"></span><span class="preprocessor">#define kXMP_NS_XMP_ResourceEvent "http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"</span>
+<a name="l00350"></a><a class="code" href="XMP__Const_8h.html#9bf51f2653400645f7b5087e8c4e1c77">00350</a> <span class="preprocessor"></span><span class="preprocessor">#define kXMP_NS_XMP_ResourceRef "http://ns.adobe.com/xap/1.0/sType/ResourceRef#"</span>
+<a name="l00351"></a><a class="code" href="XMP__Const_8h.html#b4923bed71ab29c6aa88debe8816c0a2">00351</a> <span class="preprocessor"></span><span class="preprocessor">#define kXMP_NS_XMP_ST_Version "http://ns.adobe.com/xap/1.0/sType/Version#"</span>
+<a name="l00352"></a><a class="code" href="XMP__Const_8h.html#c7dc4d65bcbba2862e410cc8cfdff6f6">00352</a> <span class="preprocessor"></span><span class="preprocessor">#define kXMP_NS_XMP_ST_Job "http://ns.adobe.com/xap/1.0/sType/Job#"</span>
+<a name="l00353"></a>00353 <span class="preprocessor"></span><span class="preprocessor">#define kXMP_NS_XMP_ManifestItem "http://ns.adobe.com/xap/1.0/sType/ManifestItem#"</span>
+<a name="l00354"></a>00354 <span class="preprocessor"></span>
+<a name="l00355"></a>00355 <span class="comment">/* Deprecated constant names */</span>
+<a name="l00356"></a><a class="code" href="XMP__Const_8h.html#0a2d9c5f7beb27553214a7ad1df4f27e">00356</a> <span class="preprocessor">#define kXMP_NS_XMP_T "http://ns.adobe.com/xap/1.0/t/"</span>
+<a name="l00357"></a><a class="code" href="XMP__Const_8h.html#39afb495ffb24bb3082493c6811e65d0">00357</a> <span class="preprocessor"></span><span class="preprocessor">#define kXMP_NS_XMP_T_PG "http://ns.adobe.com/xap/1.0/t/pg/"</span>
+<a name="l00358"></a>00358 <span class="preprocessor"></span><span class="preprocessor">#define kXMP_NS_XMP_G_IMG "http://ns.adobe.com/xap/1.0/g/img/"</span>
+<a name="l00359"></a>00359 <span class="preprocessor"></span>
+<a name="l00389"></a><a class="code" href="XMP__Const_8h.html#44453f0d0a1dd295d41722c2387b36fa">00389</a> <span class="preprocessor">#define kXMP_NS_DC "http://purl.org/dc/elements/1.1/"</span>
+<a name="l00390"></a>00390 <span class="preprocessor"></span>
+<a name="l00391"></a><a class="code" href="XMP__Const_8h.html#b794d3d798daf75a963398347dcbb79b">00391</a> <span class="preprocessor">#define kXMP_NS_IPTCCore "http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/"</span>
+<a name="l00392"></a>00392 <span class="preprocessor"></span>
+<a name="l00393"></a>00393 <span class="preprocessor">#define kXMP_NS_PDFA_Schema "http://www.aiim.org/pdfa/ns/schema#"</span>
+<a name="l00394"></a>00394 <span class="preprocessor"></span><span class="preprocessor">#define kXMP_NS_PDFA_Property "http://www.aiim.org/pdfa/ns/property#"</span>
+<a name="l00395"></a>00395 <span class="preprocessor"></span><span class="preprocessor">#define kXMP_NS_PDFA_Type "http://www.aiim.org/pdfa/ns/type#"</span>
+<a name="l00396"></a>00396 <span class="preprocessor"></span><span class="preprocessor">#define kXMP_NS_PDFA_Field "http://www.aiim.org/pdfa/ns/field#"</span>
+<a name="l00397"></a>00397 <span class="preprocessor"></span><span class="preprocessor">#define kXMP_NS_PDFA_ID "http://www.aiim.org/pdfa/ns/id/"</span>
+<a name="l00398"></a>00398 <span class="preprocessor"></span><span class="preprocessor">#define kXMP_NS_PDFA_Extension "http://www.aiim.org/pdfa/ns/extension/"</span>
+<a name="l00399"></a>00399 <span class="preprocessor"></span>
+<a name="l00400"></a>00400 <span class="preprocessor">#define kXMP_NS_PDFX "http://ns.adobe.com/pdfx/1.3/"</span>
+<a name="l00401"></a>00401 <span class="preprocessor"></span><span class="preprocessor">#define kXMP_NS_PDFX_ID "http://www.npes.org/pdfx/ns/id/"</span>
+<a name="l00402"></a>00402 <span class="preprocessor"></span>
+<a name="l00403"></a><a class="code" href="XMP__Const_8h.html#276fac0f70893607afa3f09030ad84c7">00403</a> <span class="preprocessor">#define kXMP_NS_RDF "http://www.w3.org/1999/02/22-rdf-syntax-ns#"</span>
+<a name="l00404"></a><a class="code" href="XMP__Const_8h.html#97564c70460d1f235c8a41b8ac40cfe9">00404</a> <span class="preprocessor"></span><span class="preprocessor">#define kXMP_NS_XML "http://www.w3.org/XML/1998/namespace"</span>
+<a name="l00405"></a>00405 <span class="preprocessor"></span>
+<a name="l00406"></a>00406
+<a name="l00407"></a>00407 <span class="comment">/* ============================================================================================== */</span>
+<a name="l00408"></a>00408 <span class="comment">/* Enums and macros used for option bits */</span>
+<a name="l00409"></a>00409 <span class="comment">/* ===================================== */</span>
+<a name="l00410"></a>00410
+<a name="l00411"></a>00411 <span class="preprocessor">#define kXMP_ArrayLastItem ((XMP_Index)(-1L))</span>
+<a name="l00412"></a>00412 <span class="preprocessor"></span><span class="preprocessor">#define kXMP_UseNullTermination ((XMP_StringLen)(~0UL))</span>
+<a name="l00413"></a>00413 <span class="preprocessor"></span>
+<a name="l00414"></a>00414 <span class="preprocessor">#define kXMP_NoOptions ((XMP_OptionBits)0UL)</span>
+<a name="l00415"></a>00415 <span class="preprocessor"></span>
+<a name="l00416"></a>00416 <span class="preprocessor">#define XMP_SetOption(var,opt) var |= (opt)</span>
+<a name="l00417"></a>00417 <span class="preprocessor"></span><span class="preprocessor">#define XMP_ClearOption(var,opt) var &amp;= ~(opt)</span>
+<a name="l00418"></a>00418 <span class="preprocessor"></span><span class="preprocessor">#define XMP_TestOption(var,opt) (((var) &amp; (opt)) != 0)</span>
+<a name="l00419"></a>00419 <span class="preprocessor"></span><span class="preprocessor">#define XMP_OptionIsSet(var,opt) (((var) &amp; (opt)) != 0)</span>
+<a name="l00420"></a>00420 <span class="preprocessor"></span><span class="preprocessor">#define XMP_OptionIsClear(var,opt) (((var) &amp; (opt)) == 0)</span>
+<a name="l00421"></a>00421 <span class="preprocessor"></span>
+<a name="l00422"></a>00422 <span class="preprocessor">#define XMP_PropIsSimple(opt) (((opt) &amp; kXMP_PropCompositeMask) == 0)</span>
+<a name="l00423"></a>00423 <span class="preprocessor"></span><span class="preprocessor">#define XMP_PropIsStruct(opt) (((opt) &amp; kXMP_PropValueIsStruct) != 0)</span>
+<a name="l00424"></a>00424 <span class="preprocessor"></span><span class="preprocessor">#define XMP_PropIsArray(opt) (((opt) &amp; kXMP_PropValueIsArray) != 0)</span>
+<a name="l00425"></a>00425 <span class="preprocessor"></span><span class="preprocessor">#define XMP_ArrayIsUnordered(opt) (((opt) &amp; kXMP_PropArrayIsOrdered) == 0)</span>
+<a name="l00426"></a>00426 <span class="preprocessor"></span><span class="preprocessor">#define XMP_ArrayIsOrdered(opt) (((opt) &amp; kXMP_PropArrayIsOrdered) != 0)</span>
+<a name="l00427"></a>00427 <span class="preprocessor"></span><span class="preprocessor">#define XMP_ArrayIsAlternate(opt) (((opt) &amp; kXMP_PropArrayIsAlternate) != 0)</span>
+<a name="l00428"></a>00428 <span class="preprocessor"></span><span class="preprocessor">#define XMP_ArrayIsAltText(opt) (((opt) &amp; kXMP_PropArrayIsAltText) != 0)</span>
+<a name="l00429"></a>00429 <span class="preprocessor"></span>
+<a name="l00430"></a>00430 <span class="preprocessor">#define XMP_PropHasQualifiers(opt) (((opt) &amp; kXMP_PropHasQualifiers) != 0)</span>
+<a name="l00431"></a>00431 <span class="preprocessor"></span><span class="preprocessor">#define XMP_PropIsQualifier(opt) (((opt) &amp; kXMP_PropIsQualifier) != 0)</span>
+<a name="l00432"></a>00432 <span class="preprocessor"></span><span class="preprocessor">#define XMP_PropHasLang(opt) (((opt) &amp; kXMP_PropHasLang) != 0)</span>
+<a name="l00433"></a>00433 <span class="preprocessor"></span>
+<a name="l00434"></a>00434 <span class="preprocessor">#define XMP_NodeIsSchema(opt) (((opt) &amp; kXMP_SchemaNode) != 0)</span>
+<a name="l00435"></a>00435 <span class="preprocessor"></span><span class="preprocessor">#define XMP_PropIsAlias(opt) (((opt) &amp; kXMP_PropIsAlias) != 0)</span>
+<a name="l00436"></a>00436 <span class="preprocessor"></span>
+<a name="l00437"></a>00437 <span class="comment">/* ---------------------------------------------------------------------------------------------- */</span>
+<a name="l00438"></a>00438
+<a name="l00439"></a>00439 <span class="keyword">enum</span> { <span class="comment">/* Option bits returned from the TXMPMeta::GetXyz functions. */</span>
+<a name="l00440"></a>00440
+<a name="l00441"></a>00441 <span class="comment">/* Options relating to the XML string form of the property value. */</span>
+<a name="l00442"></a>00442 kXMP_PropValueIsURI = 0x00000002UL, <span class="comment">/* The value is a URI, use rdf:resource attribute. DISCOURAGED */</span>
+<a name="l00443"></a>00443
+<a name="l00444"></a>00444 <span class="comment">/* Options relating to qualifiers attached to a property. */</span>
+<a name="l00445"></a>00445 kXMP_PropHasQualifiers = 0x00000010UL, <span class="comment">/* The property has qualifiers, includes rdf:type and xml:lang. */</span>
+<a name="l00446"></a>00446 kXMP_PropIsQualifier = 0x00000020UL, <span class="comment">/* This is a qualifier, includes rdf:type and xml:lang. */</span>
+<a name="l00447"></a>00447 kXMP_PropHasLang = 0x00000040UL, <span class="comment">/* Implies kXMP_PropHasQualifiers, property has xml:lang. */</span>
+<a name="l00448"></a>00448 kXMP_PropHasType = 0x00000080UL, <span class="comment">/* Implies kXMP_PropHasQualifiers, property has rdf:type. */</span>
+<a name="l00449"></a>00449
+<a name="l00450"></a>00450 <span class="comment">/* Options relating to the data structure form. */</span>
+<a name="l00451"></a>00451 kXMP_PropValueIsStruct = 0x00000100UL, <span class="comment">/* The value is a structure with nested fields. */</span>
+<a name="l00452"></a>00452 kXMP_PropValueIsArray = 0x00000200UL, <span class="comment">/* The value is an array (RDF alt/bag/seq). */</span>
+<a name="l00453"></a>00453 kXMP_PropArrayIsUnordered = kXMP_PropValueIsArray, <span class="comment">/* The item order does not matter. */</span>
+<a name="l00454"></a>00454 kXMP_PropArrayIsOrdered = 0x00000400UL, <span class="comment">/* Implies kXMP_PropValueIsArray, item order matters. */</span>
+<a name="l00455"></a>00455 kXMP_PropArrayIsAlternate = 0x00000800UL, <span class="comment">/* Implies kXMP_PropArrayIsOrdered, items are alternates. */</span>
+<a name="l00456"></a>00456
+<a name="l00457"></a>00457 <span class="comment">/* Additional struct and array options. */</span>
+<a name="l00458"></a>00458 kXMP_PropArrayIsAltText = 0x00001000UL, <span class="comment">/* Implies kXMP_PropArrayIsAlternate, items are localized text. */</span>
+<a name="l00459"></a>00459 <span class="comment">/* kXMP_InsertBeforeItem = 0x00004000UL, ! Used by SetXyz functions. */</span>
+<a name="l00460"></a>00460 <span class="comment">/* kXMP_InsertAfterItem = 0x00008000UL, ! Used by SetXyz functions. */</span>
+<a name="l00461"></a>00461
+<a name="l00462"></a>00462 <span class="comment">/* Other miscellaneous options. */</span>
+<a name="l00463"></a>00463 kXMP_PropIsAlias = 0x00010000UL, <span class="comment">/* This property is an alias name for another property. */</span>
+<a name="l00464"></a>00464 kXMP_PropHasAliases = 0x00020000UL, <span class="comment">/* This property is the base value for a set of aliases. */</span>
+<a name="l00465"></a>00465 kXMP_PropIsInternal = 0x00040000UL, <span class="comment">/* This property is an "internal" property, owned by applications. */</span>
+<a name="l00466"></a>00466 kXMP_PropIsStable = 0x00100000UL, <span class="comment">/* This property is not derived from the document content. */</span>
+<a name="l00467"></a>00467 kXMP_PropIsDerived = 0x00200000UL, <span class="comment">/* This property is derived from the document content. */</span>
+<a name="l00468"></a>00468 <span class="comment">/* kXMPUtil_AllowCommas = 0x10000000UL, ! Used by TXMPUtils::CatenateArrayItems and ::SeparateArrayItems. */</span>
+<a name="l00469"></a>00469 <span class="comment">/* kXMP_DeleteExisting = 0x20000000UL, ! Used by TXMPMeta::SetXyz functions to delete any pre-existing property. */</span>
+<a name="l00470"></a>00470 <span class="comment">/* kXMP_SchemaNode = 0x80000000UL, ! Returned by iterators - #define to avoid warnings */</span>
+<a name="l00471"></a>00471
+<a name="l00472"></a>00472 <span class="comment">/* Masks that are multiple flags. */</span>
+<a name="l00473"></a>00473 kXMP_PropArrayFormMask = kXMP_PropValueIsArray | kXMP_PropArrayIsOrdered | kXMP_PropArrayIsAlternate | kXMP_PropArrayIsAltText,
+<a name="l00474"></a>00474 kXMP_PropCompositeMask = kXMP_PropValueIsStruct | kXMP_PropArrayFormMask, <span class="comment">/* Is it simple or composite (array or struct)? */</span>
+<a name="l00475"></a>00475 kXMP_ImplReservedMask = 0x70000000L <span class="comment">/* Reserved for transient use by the implementation. */</span>
+<a name="l00476"></a>00476 };
+<a name="l00477"></a>00477
+<a name="l00478"></a>00478 <span class="preprocessor">#define kXMP_SchemaNode ((XMP_OptionBits)0x80000000UL)</span>
+<a name="l00479"></a>00479 <span class="preprocessor"></span>
+<a name="l00480"></a>00480 <span class="keyword">enum</span> { <span class="comment">/* Option bits for the TXMPMeta::SetXyz functions. */</span>
+<a name="l00481"></a>00481
+<a name="l00482"></a>00482 <span class="comment">/* Options shared with GetXyz functions. */</span>
+<a name="l00483"></a>00483 <span class="comment">/*</span>
+<a name="l00484"></a>00484 <span class="comment"> kXMP_PropValueIsURI = 0x00000002UL, DISCOURAGED</span>
+<a name="l00485"></a>00485 <span class="comment"> kXMP_PropValueIsStruct = 0x00000100UL,</span>
+<a name="l00486"></a>00486 <span class="comment"> kXMP_PropValueIsArray = 0x00000200UL,</span>
+<a name="l00487"></a>00487 <span class="comment"> kXMP_PropArrayIsOrdered = 0x00000400UL,</span>
+<a name="l00488"></a>00488 <span class="comment"> kXMP_PropArrayIsAlternate = 0x00000800UL,</span>
+<a name="l00489"></a>00489 <span class="comment"> kXMP_PropArrayIsAltText = 0x00001000UL,</span>
+<a name="l00490"></a>00490 <span class="comment"> kXMP_PropValueIsCompact = 0x00002000UL, RESERVED</span>
+<a name="l00491"></a>00491 <span class="comment"> */</span>
+<a name="l00492"></a>00492
+<a name="l00493"></a>00493 <span class="comment">/* Options for array item location. */</span>
+<a name="l00494"></a>00494 kXMP_InsertBeforeItem = 0x00004000UL, <span class="comment">/* Insert a new item before the given index. */</span>
+<a name="l00495"></a>00495 kXMP_InsertAfterItem = 0x00008000UL, <span class="comment">/* Insert a new item after the given index. */</span>
+<a name="l00496"></a>00496
+<a name="l00497"></a>00497 <span class="comment">/* Miscellaneous options */</span>
+<a name="l00498"></a>00498 kXMP_DeleteExisting = 0x20000000UL, <span class="comment">/* Delete any pre-existing property. */</span>
+<a name="l00499"></a>00499
+<a name="l00500"></a>00500 <span class="comment">/* Masks that are multiple flags. */</span>
+<a name="l00501"></a>00501 kXMP_PropValueOptionsMask = kXMP_PropValueIsURI,
+<a name="l00502"></a>00502 kXMP_PropArrayLocationMask = kXMP_InsertBeforeItem | kXMP_InsertAfterItem
+<a name="l00503"></a>00503
+<a name="l00504"></a>00504 };
+<a name="l00505"></a>00505
+<a name="l00506"></a>00506 <span class="comment">/* ---------------------------------------------------------------------------------------------- */</span>
+<a name="l00507"></a>00507
+<a name="l00508"></a>00508 <span class="keyword">enum</span> { <span class="comment">/* Options for TXMPMeta::ParseFromBuffer. */</span>
+<a name="l00509"></a>00509 kXMP_RequireXMPMeta = 0x0001UL, <span class="comment">/* Require a surrounding x:xmpmeta element. */</span>
+<a name="l00510"></a>00510 kXMP_ParseMoreBuffers = 0x0002UL, <span class="comment">/* This is the not last input buffer for this parse stream. */</span>
+<a name="l00511"></a>00511 kXMP_StrictAliasing = 0x0004UL <span class="comment">/* Do not reconcile alias differences, throw an exception. */</span>
+<a name="l00512"></a>00512 };
+<a name="l00513"></a>00513
+<a name="l00514"></a>00514 <span class="keyword">enum</span> { <span class="comment">/* Options for TXMPMeta::SerializeToBuffer. */</span>
+<a name="l00515"></a>00515
+<a name="l00516"></a>00516 <span class="comment">/* *** Option to remove empty struct/array, or leaf with empty value? */</span>
+<a name="l00517"></a>00517
+<a name="l00518"></a>00518 kXMP_OmitPacketWrapper = 0x0010UL, <span class="comment">/* Omit the XML packet wrapper. */</span>
+<a name="l00519"></a>00519 kXMP_ReadOnlyPacket = 0x0020UL, <span class="comment">/* Default is a writeable packet. */</span>
+<a name="l00520"></a>00520 kXMP_UseCompactFormat = 0x0040UL, <span class="comment">/* Use a compact form of RDF. */</span>
+<a name="l00521"></a>00521
+<a name="l00522"></a>00522 kXMP_IncludeThumbnailPad = 0x0100UL, <span class="comment">/* Include a padding allowance for a thumbnail image. */</span>
+<a name="l00523"></a>00523 kXMP_ExactPacketLength = 0x0200UL, <span class="comment">/* The padding parameter is the overall packet length. */</span>
+<a name="l00524"></a>00524 kXMP_WriteAliasComments = 0x0400UL, <span class="comment">/* Show aliases as XML comments. */</span>
+<a name="l00525"></a>00525 kXMP_OmitAllFormatting = 0x0800UL, <span class="comment">/* Omit all formatting whitespace. */</span>
+<a name="l00526"></a>00526
+<a name="l00527"></a>00527 _XMP_LittleEndian_Bit = 0x0001UL, <span class="comment">/* ! Don't use directly, see the combined values below! */</span>
+<a name="l00528"></a>00528 _XMP_UTF16_Bit = 0x0002UL,
+<a name="l00529"></a>00529 _XMP_UTF32_Bit = 0x0004UL,
+<a name="l00530"></a>00530
+<a name="l00531"></a>00531 kXMP_EncodingMask = 0x0007UL,
+<a name="l00532"></a>00532 kXMP_EncodeUTF8 = 0UL,
+<a name="l00533"></a>00533 kXMP_EncodeUTF16Big = _XMP_UTF16_Bit,
+<a name="l00534"></a>00534 kXMP_EncodeUTF16Little = _XMP_UTF16_Bit | _XMP_LittleEndian_Bit,
+<a name="l00535"></a>00535 kXMP_EncodeUTF32Big = _XMP_UTF32_Bit,
+<a name="l00536"></a>00536 kXMP_EncodeUTF32Little = _XMP_UTF32_Bit | _XMP_LittleEndian_Bit
+<a name="l00537"></a>00537
+<a name="l00538"></a>00538 };
+<a name="l00539"></a>00539
+<a name="l00540"></a>00540 <span class="comment">/* ---------------------------------------------------------------------------------------------- */</span>
+<a name="l00541"></a>00541
+<a name="l00542"></a>00542 <span class="keyword">enum</span> { <span class="comment">/* Options for TXMPIterator construction. */</span>
+<a name="l00543"></a>00543
+<a name="l00544"></a>00544 kXMP_IterClassMask = 0x00FFUL, <span class="comment">/* The low 8 bits are an enum of what data structure to iterate. */</span>
+<a name="l00545"></a>00545 kXMP_IterProperties = 0x0000UL, <span class="comment">/* Iterate the property tree of a TXMPMeta object. */</span>
+<a name="l00546"></a>00546 kXMP_IterAliases = 0x0001UL, <span class="comment">/* Iterate the global alias table. */</span>
+<a name="l00547"></a>00547 kXMP_IterNamespaces = 0x0002UL, <span class="comment">/* Iterate the global namespace table. */</span>
+<a name="l00548"></a>00548 kXMP_IterJustChildren = 0x0100UL, <span class="comment">/* Just do the immediate children of the root, default is subtree. */</span>
+<a name="l00549"></a>00549 kXMP_IterJustLeafNodes = 0x0200UL, <span class="comment">/* Just do the leaf nodes, default is all nodes in the subtree. */</span>
+<a name="l00550"></a>00550 kXMP_IterJustLeafName = 0x0400UL, <span class="comment">/* Return just the leaf part of the path, default is the full path. */</span>
+<a name="l00551"></a>00551 kXMP_IterIncludeAliases = 0x0800UL, <span class="comment">/* Include aliases, default is just actual properties. */</span>
+<a name="l00552"></a>00552
+<a name="l00553"></a>00553 kXMP_IterOmitQualifiers = 0x1000UL <span class="comment">/* Omit all qualifiers. */</span>
+<a name="l00554"></a>00554
+<a name="l00555"></a>00555 };
+<a name="l00556"></a>00556
+<a name="l00557"></a>00557 <span class="keyword">enum</span> { <span class="comment">/* Options for TXMPIterator::Skip. */</span>
+<a name="l00558"></a>00558 kXMP_IterSkipSubtree = 0x0001UL, <span class="comment">/* Skip the subtree below the current node. */</span>
+<a name="l00559"></a>00559 kXMP_IterSkipSiblings = 0x0002UL <span class="comment">/* Skip the subtree below and remaining siblings of the current node. */</span>
+<a name="l00560"></a>00560 };
+<a name="l00561"></a>00561
+<a name="l00562"></a>00562 <span class="comment">/* ---------------------------------------------------------------------------------------------- */</span>
+<a name="l00563"></a>00563
+<a name="l00564"></a>00564 <span class="keyword">enum</span> { <span class="comment">/* Options for TXMPUtils::CatenateArrayItems and TXMPUtils::SeparateArrayItems. */</span>
+<a name="l00565"></a>00565
+<a name="l00566"></a>00566 <span class="comment">/* Options shared with GetXyz functions. */</span>
+<a name="l00567"></a>00567 <span class="comment">/*</span>
+<a name="l00568"></a>00568 <span class="comment"> kXMP_PropValueIsArray = 0x00000200UL,</span>
+<a name="l00569"></a>00569 <span class="comment"> kXMP_PropArrayIsOrdered = 0x00000400UL,</span>
+<a name="l00570"></a>00570 <span class="comment"> kXMP_PropArrayIsAlternate = 0x00000800UL,</span>
+<a name="l00571"></a>00571 <span class="comment"> kXMP_PropArrayIsAltText = 0x00001000UL,</span>
+<a name="l00572"></a>00572 <span class="comment"> */</span>
+<a name="l00573"></a>00573
+<a name="l00574"></a>00574 kXMPUtil_AllowCommas = 0x10000000UL <span class="comment">/* Allow commas in item values, default is separator. */</span>
+<a name="l00575"></a>00575
+<a name="l00576"></a>00576 };
+<a name="l00577"></a>00577
+<a name="l00578"></a>00578 <span class="keyword">enum</span> { <span class="comment">/* Options for TXMPUtils::RemoveProperties and TXMPUtils::AppendProperties. */</span>
+<a name="l00579"></a>00579 kXMPUtil_DoAllProperties = 0x0001UL, <span class="comment">/* Do all properties, default is just external properties. */</span>
+<a name="l00580"></a>00580 kXMPUtil_ReplaceOldValues = 0x0002UL, <span class="comment">/* Replace existing values, default is to leave them. */</span>
+<a name="l00581"></a>00581 kXMPUtil_DeleteEmptyValues = 0x0004UL, <span class="comment">/* Delete properties if the new value is empty. */</span>
+<a name="l00582"></a>00582 kXMPUtil_IncludeAliases = 0x0800UL <span class="comment">/* == kXMP_IterIncludeAliases */</span>
+<a name="l00583"></a>00583 };
+<a name="l00584"></a>00584
+<a name="l00585"></a>00585 <span class="comment">/* ============================================================================================== */</span>
+<a name="l00586"></a>00586 <span class="comment">/* Types and Constants for XMP File Handler */</span>
+<a name="l00587"></a>00587 <span class="comment">/* ======================================== */</span>
+<a name="l00588"></a>00588
+<a name="l00589"></a>00589 <span class="keyword">enum</span> {
+<a name="l00590"></a>00590
+<a name="l00591"></a>00591 <span class="comment">/* Public file formats. Hex used to avoid gcc warnings. */</span>
+<a name="l00592"></a>00592 <span class="comment">/* ! Leave them as big endian. There seems to be no decent way on UNIX to determine the target */</span>
+<a name="l00593"></a>00593 <span class="comment">/* ! endianness at compile time. Forcing it on the client isn't acceptable. */</span>
+<a name="l00594"></a>00594
+<a name="l00595"></a>00595 kXMP_PDFFile = 0x50444620UL, <span class="comment">/* 'PDF ' */</span>
+<a name="l00596"></a>00596 kXMP_PostScriptFile = 0x50532020UL, <span class="comment">/* 'PS ', general PostScript following DSC conventions. */</span>
+<a name="l00597"></a>00597 kXMP_EPSFile = 0x45505320UL, <span class="comment">/* 'EPS ', encapsulated PostScript. */</span>
+<a name="l00598"></a>00598
+<a name="l00599"></a>00599 kXMP_JPEGFile = 0x4A504547UL, <span class="comment">/* 'JPEG' */</span>
+<a name="l00600"></a>00600 kXMP_JPEG2KFile = 0x4A505820UL, <span class="comment">/* 'JPX ', ISO 15444-1 */</span>
+<a name="l00601"></a>00601 kXMP_TIFFFile = 0x54494646UL, <span class="comment">/* 'TIFF' */</span>
+<a name="l00602"></a>00602 kXMP_GIFFile = 0x47494620UL, <span class="comment">/* 'GIF ' */</span>
+<a name="l00603"></a>00603 kXMP_PNGFile = 0x504E4720UL, <span class="comment">/* 'PNG ' */</span>
+<a name="l00604"></a>00604
+<a name="l00605"></a>00605 kXMP_SWFFile = 0x53574620UL, <span class="comment">/* 'SWF ' */</span>
+<a name="l00606"></a>00606 kXMP_FLAFile = 0x464C4120UL, <span class="comment">/* 'FLA ' */</span>
+<a name="l00607"></a>00607 kXMP_FLVFile = 0x464C5620UL, <span class="comment">/* 'FLV ' */</span>
+<a name="l00608"></a>00608
+<a name="l00609"></a>00609 kXMP_MOVFile = 0x4D4F5620UL, <span class="comment">/* 'MOV ', Quicktime */</span>
+<a name="l00610"></a>00610 kXMP_AVIFile = 0x41564920UL, <span class="comment">/* 'AVI ' */</span>
+<a name="l00611"></a>00611 kXMP_CINFile = 0x43494E20UL, <span class="comment">/* 'CIN ', Cineon */</span>
+<a name="l00612"></a>00612 kXMP_WAVFile = 0x57415620UL, <span class="comment">/* 'WAV ' */</span>
+<a name="l00613"></a>00613 kXMP_MP3File = 0x4D503320UL, <span class="comment">/* 'MP3 ' */</span>
+<a name="l00614"></a>00614 kXMP_SESFile = 0x53455320UL, <span class="comment">/* 'SES ', Audition session */</span>
+<a name="l00615"></a>00615 kXMP_CELFile = 0x43454C20UL, <span class="comment">/* 'CEL ', Audition loop */</span>
+<a name="l00616"></a>00616 kXMP_MPEGFile = 0x4D504547UL, <span class="comment">/* 'MPEG' */</span>
+<a name="l00617"></a>00617 kXMP_MPEG2File = 0x4D503220UL, <span class="comment">/* 'MP2 ' */</span>
+<a name="l00618"></a>00618 kXMP_MPEG4File = 0x4D503420UL, <span class="comment">/* 'MP4 ', ISO 14494-12 and -14 */</span>
+<a name="l00619"></a>00619 kXMP_WMAVFile = 0x574D4156UL, <span class="comment">/* 'WMAV', Windows Media Audio and Video */</span>
+<a name="l00620"></a>00620 kXMP_AIFFFile = 0x41494646UL, <span class="comment">/* 'AIFF' */</span>
+<a name="l00621"></a>00621
+<a name="l00622"></a>00622 kXMP_HTMLFile = 0x48544D4CUL, <span class="comment">/* 'HTML' */</span>
+<a name="l00623"></a>00623 kXMP_XMLFile = 0x584D4C20UL, <span class="comment">/* 'XML ' */</span>
+<a name="l00624"></a>00624 kXMP_TextFile = 0x74657874UL, <span class="comment">/* 'text' */</span>
+<a name="l00625"></a>00625
+<a name="l00626"></a>00626 <span class="comment">/* Adobe application file formats. */</span>
+<a name="l00627"></a>00627
+<a name="l00628"></a>00628 kXMP_PhotoshopFile = 0x50534420UL, <span class="comment">/* 'PSD ' */</span>
+<a name="l00629"></a>00629 kXMP_IllustratorFile = 0x41492020UL, <span class="comment">/* 'AI ' */</span>
+<a name="l00630"></a>00630 kXMP_InDesignFile = 0x494E4444UL, <span class="comment">/* 'INDD' */</span>
+<a name="l00631"></a>00631 kXMP_AEProjectFile = 0x41455020UL, <span class="comment">/* 'AEP ' */</span>
+<a name="l00632"></a>00632 kXMP_AEProjTemplateFile = 0x41455420UL, <span class="comment">/* 'AET ', After Effects Project Template */</span>
+<a name="l00633"></a>00633 kXMP_AEFilterPresetFile = 0x46465820UL, <span class="comment">/* 'FFX ' */</span>
+<a name="l00634"></a>00634 kXMP_EncoreProjectFile = 0x4E434F52UL, <span class="comment">/* 'NCOR' */</span>
+<a name="l00635"></a>00635 kXMP_PremiereProjectFile = 0x5052504AUL, <span class="comment">/* 'PRPJ' */</span>
+<a name="l00636"></a>00636 kXMP_PremiereTitleFile = 0x5052544CUL, <span class="comment">/* 'PRTL' */</span>
+<a name="l00637"></a>00637
+<a name="l00638"></a>00638 <span class="comment">/* Catch all. */</span>
+<a name="l00639"></a>00639
+<a name="l00640"></a>00640 kXMP_UnknownFile = 0x20202020UL <span class="comment">/* ' ' */</span>
+<a name="l00641"></a>00641
+<a name="l00642"></a>00642 };
+<a name="l00643"></a>00643 <span class="keyword">typedef</span> XMP_Uns32 XMP_FileFormat;
+<a name="l00644"></a>00644
+<a name="l00645"></a>00645 <span class="comment">/* ---------------------------------------------------------------------------------------------- */</span>
+<a name="l00646"></a>00646
+<a name="l00647"></a>00647 <span class="keyword">enum</span> {
+<a name="l00648"></a>00648 kXMP_CharLittleEndianMask = 1,
+<a name="l00649"></a>00649 kXMP_Char16BitMask = 2, <span class="comment">/* Don't use these directly. */</span>
+<a name="l00650"></a>00650 kXMP_Char32BitMask = 4
+<a name="l00651"></a>00651 };
+<a name="l00652"></a>00652
+<a name="l00653"></a>00653 <span class="keyword">enum</span> { <span class="comment">/* The values allow easy testing for 16/32 bit and big/little endian. */</span>
+<a name="l00654"></a>00654 kXMP_Char8Bit = 0,
+<a name="l00655"></a>00655 kXMP_Char16BitBig = kXMP_Char16BitMask,
+<a name="l00656"></a>00656 kXMP_Char16BitLittle = kXMP_Char16BitMask | kXMP_CharLittleEndianMask,
+<a name="l00657"></a>00657 kXMP_Char32BitBig = kXMP_Char32BitMask,
+<a name="l00658"></a>00658 kXMP_Char32BitLittle = kXMP_Char32BitMask | kXMP_CharLittleEndianMask,
+<a name="l00659"></a>00659 kXMP_CharUnknown = 1 <span class="comment">/* ! A bit of a hack, for variable or not-yet-known cases. */</span>
+<a name="l00660"></a>00660 };
+<a name="l00661"></a>00661
+<a name="l00662"></a>00662 <span class="preprocessor">#define XMP_CharFormIs16Bit(f) ( ((int)(f) &amp; kXMP_Char16BitMask) != 0 )</span>
+<a name="l00663"></a>00663 <span class="preprocessor"></span><span class="preprocessor">#define XMP_CharFormIs32Bit(f) ( ((int)(f) &amp; kXMP_Char32BitMask) != 0 )</span>
+<a name="l00664"></a>00664 <span class="preprocessor"></span>
+<a name="l00665"></a>00665 <span class="preprocessor">#define XMP_CharFormIsBigEndian(f) ( ((int)(f) &amp; kXMP_CharLittleEndianMask) == 0 )</span>
+<a name="l00666"></a>00666 <span class="preprocessor"></span><span class="preprocessor">#define XMP_CharFormIsLittleEndian(f) ( ((int)(f) &amp; kXMP_CharLittleEndianMask) != 0 )</span>
+<a name="l00667"></a>00667 <span class="preprocessor"></span>
+<a name="l00668"></a>00668 <span class="preprocessor">#define XMP_GetCharSize(f) ( ((int)(f)&amp;6) == 0 ? 1 : (int)(f)&amp;6 )</span>
+<a name="l00669"></a>00669 <span class="preprocessor"></span>
+<a name="l00670"></a>00670 <span class="preprocessor">#define XMP_CharToSerializeForm(cf) ( (XMP_OptionBits)(cf) )</span>
+<a name="l00671"></a>00671 <span class="preprocessor"></span><span class="preprocessor">#define XMP_CharFromSerializeForm(sf) ( (XMP_Uns8)(sf) )</span>
+<a name="l00672"></a>00672 <span class="preprocessor"></span>
+<a name="l00673"></a>00673 <span class="keyword">struct </span>XMP_PacketInfo {
+<a name="l00674"></a>00674 XMP_Int64 offset;
+<a name="l00675"></a>00675 XMP_Int32 length;
+<a name="l00676"></a>00676 XMP_Int32 padSize; <span class="comment">/* Zero if unknown. */</span>
+<a name="l00677"></a>00677 XMP_Uns8 charForm;
+<a name="l00678"></a>00678 XMP_Bool writeable;
+<a name="l00679"></a>00679 XMP_Uns8 pad1, pad2;
+<a name="l00680"></a>00680 <span class="preprocessor"> #if __cplusplus</span>
+<a name="l00681"></a>00681 <span class="preprocessor"></span> XMP_PacketInfo() : offset(0), length(0), padSize(0), charForm(0), writeable(0), pad1(0), pad2(0) {};
+<a name="l00682"></a>00682 <span class="preprocessor"> #endif</span>
+<a name="l00683"></a>00683 <span class="preprocessor"></span>};
+<a name="l00684"></a>00684 <span class="preprocessor">#if ! __cplusplus</span>
+<a name="l00685"></a>00685 <span class="preprocessor"></span> <span class="keyword">typedef</span> <span class="keyword">struct </span>XMP_PacketInfo XMP_PacketInfo;
+<a name="l00686"></a>00686 <span class="preprocessor">#endif</span>
+<a name="l00687"></a>00687 <span class="preprocessor"></span><span class="keyword">enum</span> { kXMP_PacketInfoVersion = 3 };
+<a name="l00688"></a>00688
+<a name="l00689"></a>00689 <span class="comment">/* ---------------------------------------------------------------------------------------------- */</span>
+<a name="l00690"></a>00690
+<a name="l00691"></a>00691 <span class="keyword">enum</span> { <span class="comment">/* Values for XMP_ThumbnailInfo.tnailFormat. */</span>
+<a name="l00692"></a>00692 kXMP_UnknownTNail = 0, <span class="comment">/* The thumbnail data has an unknown format. */</span>
+<a name="l00693"></a>00693 kXMP_JPEGTNail = 1, <span class="comment">/* The thumbnail data is a JPEG stream, presumably compressed. */</span>
+<a name="l00694"></a>00694 kXMP_TIFFTNail = 2, <span class="comment">/* The thumbnail data is a TIFF stream, presumably uncompressed. */</span>
+<a name="l00695"></a>00695 kXMP_PShopTNail = 3 <span class="comment">/* The thumbnail data is in the format of Photoshop Image Resource 1036. */</span>
+<a name="l00696"></a>00696 };
+<a name="l00697"></a>00697
+<a name="l00698"></a>00698 <span class="keyword">struct </span>XMP_ThumbnailInfo {
+<a name="l00699"></a>00699 XMP_FileFormat fileFormat; <span class="comment">/* The format of the containing file. */</span>
+<a name="l00700"></a>00700 XMP_Uns32 fullWidth, fullHeight; <span class="comment">/* Full image size in pixels. */</span>
+<a name="l00701"></a>00701 XMP_Uns32 tnailWidth, tnailHeight; <span class="comment">/* Thumbnail image size in pixels. */</span>
+<a name="l00702"></a>00702 XMP_Uns16 fullOrientation, tnailOrientation; <span class="comment">/* Orientation of full image and thumbnail, as defined by Exif for tag 274. */</span>
+<a name="l00703"></a>00703 <span class="keyword">const</span> XMP_Uns8 * tnailImage; <span class="comment">/* Raw data from the host file, valid for life of the owning XMPFiles object. Do not modify! */</span>
+<a name="l00704"></a>00704 XMP_Uns32 tnailSize; <span class="comment">/* The size in bytes of the tnailImage data. */</span>
+<a name="l00705"></a>00705 XMP_Uns8 tnailFormat; <span class="comment">/* The format of the tnailImage data. */</span>
+<a name="l00706"></a>00706 XMP_Uns8 pad1, pad2, pad3;
+<a name="l00707"></a>00707 <span class="preprocessor"> #if __cplusplus</span>
+<a name="l00708"></a>00708 <span class="preprocessor"></span> XMP_ThumbnailInfo() : fileFormat(kXMP_UnknownFile), fullWidth(0), fullHeight(0),
+<a name="l00709"></a>00709 tnailWidth(0), tnailHeight(0), fullOrientation(0), tnailOrientation(0),
+<a name="l00710"></a>00710 tnailImage(0), tnailSize(0), tnailFormat(kXMP_UnknownTNail) {};
+<a name="l00711"></a>00711 <span class="preprocessor"> #endif</span>
+<a name="l00712"></a>00712 <span class="preprocessor"></span>};
+<a name="l00713"></a>00713 <span class="preprocessor">#if ! __cplusplus</span>
+<a name="l00714"></a>00714 <span class="preprocessor"></span> <span class="keyword">typedef</span> <span class="keyword">struct </span>XMP_ThumbnailInfo XMP_ThumbnailInfo;
+<a name="l00715"></a>00715 <span class="preprocessor">#endif</span>
+<a name="l00716"></a>00716 <span class="preprocessor"></span><span class="keyword">enum</span> { kXMP_ThumbnailInfoVersion = 1 };
+<a name="l00717"></a>00717
+<a name="l00718"></a>00718 <span class="comment">/* ---------------------------------------------------------------------------------------------- */</span>
+<a name="l00719"></a>00719
+<a name="l00720"></a>00720 <span class="preprocessor">#define kXMPFiles_UnknownOffset ((XMP_Int64)-1)</span>
+<a name="l00721"></a>00721 <span class="preprocessor"></span><span class="preprocessor">#define kXMPFiles_UnknownLength ((XMP_Int32)-1)</span>
+<a name="l00722"></a>00722 <span class="preprocessor"></span>
+<a name="l00723"></a>00723 <span class="keyword">enum</span> { <span class="comment">/* Options for Initialize. */</span>
+<a name="l00724"></a>00724 kXMPFiles_NoQuickTimeInit = 0x0001 <span class="comment">/* Don't initialize QuickTime, the client will. */</span>
+<a name="l00725"></a>00725 };
+<a name="l00726"></a>00726
+<a name="l00727"></a>00727 <span class="keyword">enum</span> { <span class="comment">/* Options for GetFormatInfo. */</span>
+<a name="l00728"></a>00728 kXMPFiles_CanInjectXMP = 0x00000001, <span class="comment">/* Can inject first-time XMP into an existing file. */</span>
+<a name="l00729"></a>00729 kXMPFiles_CanExpand = 0x00000002, <span class="comment">/* Can expand XMP or other metadata in an existing file. */</span>
+<a name="l00730"></a>00730 kXMPFiles_CanRewrite = 0x00000004, <span class="comment">/* Can copy one file to another, writing new metadata. */</span>
+<a name="l00731"></a>00731 kXMPFiles_PrefersInPlace = 0x00000008, <span class="comment">/* Can expand, but prefers in-place update. */</span>
+<a name="l00732"></a>00732 kXMPFiles_CanReconcile = 0x00000010, <span class="comment">/* Supports reconciliation between XMP and other forms. */</span>
+<a name="l00733"></a>00733 kXMPFiles_AllowsOnlyXMP = 0x00000020, <span class="comment">/* Allows access to just the XMP, ignoring other forms. */</span>
+<a name="l00734"></a>00734 kXMPFiles_ReturnsRawPacket = 0x00000040, <span class="comment">/* File handler returns raw XMP packet information. */</span>
+<a name="l00735"></a>00735 kXMPFiles_ReturnsTNail = 0x00000080, <span class="comment">/* File handler returns native thumbnail. */</span>
+<a name="l00736"></a>00736 kXMPFiles_HandlerOwnsFile = 0x00000100, <span class="comment">/* The file handler does the file open and close. */</span>
+<a name="l00737"></a>00737 kXMPFiles_AllowsSafeUpdate = 0x00000200, <span class="comment">/* The file handler allows crash-safe file updates. */</span>
+<a name="l00738"></a>00738 kXMPFiles_NeedsReadOnlyPacket = 0x00000400, <span class="comment">/* The file format needs the XMP packet to be read-only. */</span>
+<a name="l00739"></a>00739 kXMPFiles_UsesSidecarXMP = 0x00000800 <span class="comment">/* The file handler uses a "sidecar" file for the XMP. */</span>
+<a name="l00740"></a>00740 };
+<a name="l00741"></a>00741
+<a name="l00742"></a>00742 <span class="keyword">enum</span> { <span class="comment">/* Options for OpenFile. */</span>
+<a name="l00743"></a>00743 kXMPFiles_OpenForRead = 0x00000001, <span class="comment">/* Open for read-only access. */</span>
+<a name="l00744"></a>00744 kXMPFiles_OpenForUpdate = 0x00000002, <span class="comment">/* Open for reading and writing. */</span>
+<a name="l00745"></a>00745 kXMPFiles_OpenOnlyXMP = 0x00000004, <span class="comment">/* Only the XMP is wanted, allows space/time optimizations. */</span>
+<a name="l00746"></a>00746 kXMPFiles_OpenCacheTNail = 0x00000008, <span class="comment">/* Cache thumbnail if possible, GetThumbnail will be called. */</span>
+<a name="l00747"></a>00747 kXMPFiles_OpenStrictly = 0x00000010, <span class="comment">/* Be strict about locating XMP and reconciling with other forms. */</span>
+<a name="l00748"></a>00748 kXMPFiles_OpenUseSmartHandler = 0x00000020, <span class="comment">/* Require the use of a smart handler. */</span>
+<a name="l00749"></a>00749 kXMPFiles_OpenUsePacketScanning = 0x00000040, <span class="comment">/* Force packet scanning, don't use a smart handler. */</span>
+<a name="l00750"></a>00750 kXMPFiles_OpenLimitedScanning = 0x00000080, <span class="comment">/* Only packet scan files "known" to need scanning. */</span>
+<a name="l00751"></a>00751 kXMPFiles_OpenInBackground = 0x10000000 <span class="comment">/* Set if calling from background thread. */</span>
+<a name="l00752"></a>00752 };
+<a name="l00753"></a>00753
+<a name="l00754"></a>00754 <span class="comment">/* A note about kXMPFiles_OpenInBackground. The XMPFiles handler for .mov files currently uses */</span>
+<a name="l00755"></a>00755 <span class="comment">/* QuickTime. On Macintosh, calls to Enter/ExitMovies versus Enter/ExitMoviesOnThread must be made. */</span>
+<a name="l00756"></a>00756 <span class="comment">/* This option is used to signal background use so that the .mov handler can behave appropriately. */</span>
+<a name="l00757"></a>00757
+<a name="l00758"></a>00758 <span class="keyword">enum</span> { <span class="comment">/* Options for CloseFile. */</span>
+<a name="l00759"></a>00759 kXMPFiles_UpdateSafely = 0x0001 <span class="comment">/* Write into a temporary file and swap for crash safety. */</span>
+<a name="l00760"></a>00760 };
+<a name="l00761"></a>00761
+<a name="l00762"></a>00762 <span class="comment">/* ============================================================================================== */</span>
+<a name="l00763"></a>00763 <span class="comment">/* Exception codes */</span>
+<a name="l00764"></a>00764 <span class="comment">/* =============== */</span>
+<a name="l00765"></a>00765
+<a name="l00779"></a>00779 <span class="preprocessor">#if ! __cplusplus</span>
+<a name="l00780"></a>00780 <span class="preprocessor"></span>
+<a name="l00781"></a>00781 <span class="keyword">typedef</span> <span class="keyword">struct </span>XMP_Error {
+<a name="l00782"></a>00782 XMP_Int32 id;
+<a name="l00783"></a>00783 XMP_StringPtr errMsg;
+<a name="l00784"></a>00784 } XMP_Error;
+<a name="l00785"></a>00785
+<a name="l00786"></a>00786 <span class="preprocessor">#else</span>
+<a name="l00787"></a>00787 <span class="preprocessor"></span>
+<a name="l00788"></a>00788 <span class="keyword">class </span>XMP_Error {
+<a name="l00789"></a>00789 <span class="keyword">public</span>:
+<a name="l00790"></a>00790 XMP_Error ( XMP_Int32 _id, XMP_StringPtr _errMsg ) : id(_id), errMsg(_errMsg) {};
+<a name="l00791"></a>00791 <span class="keyword">inline</span> XMP_Int32 GetID()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> id; };
+<a name="l00792"></a>00792 <span class="keyword">inline</span> XMP_StringPtr GetErrMsg()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> errMsg; };
+<a name="l00793"></a>00793 <span class="keyword">private</span>:
+<a name="l00794"></a>00794 XMP_Int32 id;
+<a name="l00795"></a>00795 XMP_StringPtr errMsg;
+<a name="l00796"></a>00796 };
+<a name="l00797"></a>00797
+<a name="l00798"></a>00798 <span class="preprocessor">#endif</span>
+<a name="l00799"></a>00799 <span class="preprocessor"></span>
+<a name="l00800"></a>00800 <span class="keyword">enum</span> {
+<a name="l00801"></a>00801
+<a name="l00802"></a>00802 <span class="comment">/* More or less generic error codes. */</span>
+<a name="l00803"></a>00803 kXMPErr_Unknown = 0,
+<a name="l00804"></a>00804 kXMPErr_TBD = 1,
+<a name="l00805"></a>00805 kXMPErr_Unavailable = 2,
+<a name="l00806"></a>00806 kXMPErr_BadObject = 3,
+<a name="l00807"></a>00807 kXMPErr_BadParam = 4,
+<a name="l00808"></a>00808 kXMPErr_BadValue = 5,
+<a name="l00809"></a>00809 kXMPErr_AssertFailure = 6,
+<a name="l00810"></a>00810 kXMPErr_EnforceFailure = 7,
+<a name="l00811"></a>00811 kXMPErr_Unimplemented = 8,
+<a name="l00812"></a>00812 kXMPErr_InternalFailure = 9,
+<a name="l00813"></a>00813 kXMPErr_Deprecated = 10,
+<a name="l00814"></a>00814 kXMPErr_ExternalFailure = 11,
+<a name="l00815"></a>00815 kXMPErr_UserAbort = 12,
+<a name="l00816"></a>00816 kXMPErr_StdException = 13,
+<a name="l00817"></a>00817 kXMPErr_UnknownException = 14,
+<a name="l00818"></a>00818 kXMPErr_NoMemory = 15,
+<a name="l00819"></a>00819
+<a name="l00820"></a>00820 <span class="comment">/* More specific parameter error codes. */</span>
+<a name="l00821"></a>00821 kXMPErr_BadSchema = 101,
+<a name="l00822"></a>00822 kXMPErr_BadXPath = 102,
+<a name="l00823"></a>00823 kXMPErr_BadOptions = 103,
+<a name="l00824"></a>00824 kXMPErr_BadIndex = 104,
+<a name="l00825"></a>00825 kXMPErr_BadIterPosition = 105,
+<a name="l00826"></a>00826 kXMPErr_BadParse = 106,
+<a name="l00827"></a>00827 kXMPErr_BadSerialize = 107,
+<a name="l00828"></a>00828 kXMPErr_BadFileFormat = 108,
+<a name="l00829"></a>00829 kXMPErr_NoFileHandler = 109,
+<a name="l00830"></a>00830 kXMPErr_TooLargeForJPEG = 110,
+<a name="l00831"></a>00831
+<a name="l00832"></a>00832 <span class="comment">/* File format and internal structure error codes. */</span>
+<a name="l00833"></a>00833 kXMPErr_BadXML = 201,
+<a name="l00834"></a>00834 kXMPErr_BadRDF = 202,
+<a name="l00835"></a>00835 kXMPErr_BadXMP = 203,
+<a name="l00836"></a>00836 kXMPErr_EmptyIterator = 204,
+<a name="l00837"></a>00837 kXMPErr_BadUnicode = 205,
+<a name="l00838"></a>00838 kXMPErr_BadTIFF = 206,
+<a name="l00839"></a>00839 kXMPErr_BadJPEG = 207,
+<a name="l00840"></a>00840 kXMPErr_BadPSD = 208,
+<a name="l00841"></a>00841 kXMPErr_BadPSIR = 209,
+<a name="l00842"></a>00842 kXMPErr_BadIPTC = 210,
+<a name="l00843"></a>00843 kXMPErr_BadMPEG = 211
+<a name="l00844"></a>00844
+<a name="l00845"></a>00845 };
+<a name="l00846"></a>00846
+<a name="l00852"></a>00852 <span class="comment">/* ============================================================================================== */</span>
+<a name="l00853"></a>00853 <span class="comment">/* Client callbacks */</span>
+<a name="l00854"></a>00854 <span class="comment">/* ================ */</span>
+<a name="l00855"></a>00855
+<a name="l00856"></a>00856
+<a name="l00880"></a><a class="code" href="XMP__Const_8h.html#91efdc0a7fbe6e1d42ca34e6ce589b98">00880</a> <span class="keyword">typedef</span> XMP_Int32 <a class="code" href="XMP__Const_8h.html#91efdc0a7fbe6e1d42ca34e6ce589b98">XMP_Status</a>;
+<a name="l00881"></a>00881
+<a name="l00882"></a><a class="code" href="XMP__Const_8h.html#36eab570ab85ff8fb5789661692d13c2">00882</a> <span class="keyword">typedef</span> <a class="code" href="XMP__Const_8h.html#91efdc0a7fbe6e1d42ca34e6ce589b98">XMP_Status</a> (* <a class="code" href="XMP__Const_8h.html#36eab570ab85ff8fb5789661692d13c2">XMP_TextOutputProc</a>) ( <span class="keywordtype">void</span> * refCon,
+<a name="l00883"></a>00883 XMP_StringPtr buffer,
+<a name="l00884"></a>00884 XMP_StringLen bufferSize );
+<a name="l00885"></a>00885
+<a name="l00891"></a>00891 <span class="comment">/* ============================================================================================== */</span>
+<a name="l00892"></a>00892 <span class="comment">/* Stuff with no better place to be */</span>
+<a name="l00893"></a>00893 <span class="comment">/* ================================ */</span>
+<a name="l00894"></a>00894
+<a name="l00895"></a>00895 <span class="keyword">typedef</span> <span class="keyword">struct </span>XMP_VersionInfo {
+<a name="l00896"></a>00896 XMP_Uns8 major; <span class="comment">/* The primary release number, the "1" in version "1.2.3". */</span>
+<a name="l00897"></a>00897 XMP_Uns8 minor; <span class="comment">/* The secondary release number, the "2" in version "1.2.3". */</span>
+<a name="l00898"></a>00898 XMP_Uns8 micro; <span class="comment">/* The tertiary release number, the "3" in version "1.2.3". */</span>
+<a name="l00899"></a>00899 XMP_Bool isDebug; <span class="comment">/* Really a 0/1 bool value. True if this is a debug build. */</span>
+<a name="l00900"></a>00900 XMP_Uns32 build; <span class="comment">/* A rolling build number, monotonically increasing in a release. */</span>
+<a name="l00901"></a>00901 XMP_Uns32 flags; <span class="comment">/* Individual feature implementation flags. */</span>
+<a name="l00902"></a>00902 XMP_StringPtr message; <span class="comment">/* A comprehensive version information string. */</span>
+<a name="l00903"></a>00903 } XMP_VersionInfo;
+<a name="l00904"></a>00904
+<a name="l00905"></a>00905 <span class="keyword">typedef</span> bool (* XMP_AbortProc) ( <span class="keywordtype">void</span> * arg ); <span class="comment">/* Used by SXMPFiles::SetAbortProc. */</span>
+<a name="l00906"></a>00906
+<a name="l00907"></a>00907 <span class="comment">/* ============================================================================================== */</span>
+<a name="l00908"></a>00908
+<a name="l00909"></a>00909 <span class="preprocessor">#if __cplusplus</span>
+<a name="l00910"></a>00910 <span class="preprocessor"></span>} <span class="comment">/* extern "C" */</span>
+<a name="l00911"></a>00911 <span class="preprocessor">#endif</span>
+<a name="l00912"></a>00912 <span class="preprocessor"></span>
+<a name="l00913"></a>00913 <span class="preprocessor">#endif </span><span class="comment">/* __XMP_Const_h__ */</span>
+</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu May 3 14:54:57 2007 for Adobe XMP Toolkit by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address>
+</body>
+</html>
diff --git a/docs/XMPToolkit/XMP__Const_8h.html b/docs/XMPToolkit/XMP__Const_8h.html
new file mode 100644
index 0000000..d991c56
--- /dev/null
+++ b/docs/XMPToolkit/XMP__Const_8h.html
@@ -0,0 +1,190 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Adobe XMP Toolkit: XMP_Const.h File Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.1 -->
+<div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li id="current"><a href="files.html"><span>Files</span></a></li>
+ </ul></div>
+<h1>XMP_Const.h File Reference</h1>Common C/C++ types and constants for the XMP toolkit. <a href="#_details">More...</a>
+<p>
+<code>#include &quot;XMP_Environment.h&quot;</code><br>
+<code>#include &lt;stddef.h&gt;</code><br>
+
+<p>
+Include dependency graph for XMP_Const.h:<p><center><img src="XMP__Const_8h__incl.png" border="0" usemap="#XMP_Const.h_map" alt=""></center>
+
+<p>
+<a href="XMP__Const_8h-source.html">Go to the source code of this file.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Classes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structXMP__DateTime.html">XMP_DateTime</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The expanded type for a date and time. Dates and time in the serialized XMP are ISO 8601 strings. The <code><a class="el" href="structXMP__DateTime.html">XMP_DateTime</a></code> struct allows easy conversion with other formats. <a href="structXMP__DateTime.html#_details">More...</a><br></td></tr>
+<tr><td colspan="2"><br><h2>General scalar types and constants</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4c39e0131b0e3d7db66e1cfa82b67141"></a><!-- doxytag: member="XMP_Const.h::kXMP_TrueStr" ref="4c39e0131b0e3d7db66e1cfa82b67141" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="XMP__Const_8h.html#4c39e0131b0e3d7db66e1cfa82b67141">kXMP_TrueStr</a>&nbsp;&nbsp;&nbsp;&quot;True&quot;</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The canonical true string value for Booleans in serialized XMP. Code that converts from the string to a bool should be case insensitive, and even allow "1". <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2dc55b533ed63ed7ff0c3be16a97e278"></a><!-- doxytag: member="XMP_Const.h::kXMP_FalseStr" ref="2dc55b533ed63ed7ff0c3be16a97e278" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="XMP__Const_8h.html#2dc55b533ed63ed7ff0c3be16a97e278">kXMP_FalseStr</a>&nbsp;&nbsp;&nbsp;&quot;False&quot;</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The canonical false string value for Booleans in serialized XMP. Code that converts from the string to a bool should be case insensitive, and even allow "0". <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d439e3ceeb4590d310f6125aa12c6df6"></a><!-- doxytag: member="XMP_Const.h::XMP_StringPtr" ref="d439e3ceeb4590d310f6125aa12c6df6" args="" -->
+typedef const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The type for input string parameters. A <code>const char *</code>, a null-terminated UTF-8 string. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9f7dcc184f901c713274edfdac5bcc9a"></a><!-- doxytag: member="XMP_Const.h::XMP_StringLen" ref="9f7dcc184f901c713274edfdac5bcc9a" args="" -->
+typedef XMP_Uns32&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="XMP__Const_8h.html#9f7dcc184f901c713274edfdac5bcc9a">XMP_StringLen</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The type for string length parameters. A 32-bit unsigned integer, as big as will be practically needed. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="00e9d9a76c144421105a4c2742203315"></a><!-- doxytag: member="XMP_Const.h::XMP_Index" ref="00e9d9a76c144421105a4c2742203315" args="" -->
+typedef XMP_Int32&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="XMP__Const_8h.html#00e9d9a76c144421105a4c2742203315">XMP_Index</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The type for offsets and indices. A 32-bit signed integer. It is signed because that often makes loop termination tests safer. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="eb865118433be92d88e5f49ed11487c8"></a><!-- doxytag: member="XMP_Const.h::XMP_OptionBits" ref="eb865118433be92d88e5f49ed11487c8" args="" -->
+typedef XMP_Uns32&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The type for a collection of 32 flag bits. Individual flags are defined as enum value bit masks. A number of macros provide common set or set operations, e.g. <code>XMP_PropIsSimple</code>. For other tests use an expression like "options &amp; kXMP_&lt;theOption&gt;". When passing multiple option flags use the bitwise-or operator. '|', not the arithmatic plus, '+'. <br></td></tr>
+<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">XML namespace constants for standard XMP schema.</div></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="030875c9dc0861c9251a3374ca14a376"></a><!-- doxytag: member="XMP_Const.h::kXMP_NS_XMP" ref="030875c9dc0861c9251a3374ca14a376" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="XMP__Const_8h.html#030875c9dc0861c9251a3374ca14a376">kXMP_NS_XMP</a>&nbsp;&nbsp;&nbsp;&quot;http://ns.adobe.com/xap/1.0/&quot;</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The XML namespace for the XMP "basic" schema. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e52d761e5a4fc8c8499215d2f3d82b90"></a><!-- doxytag: member="XMP_Const.h::kXMP_NS_XMP_Rights" ref="e52d761e5a4fc8c8499215d2f3d82b90" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="XMP__Const_8h.html#e52d761e5a4fc8c8499215d2f3d82b90">kXMP_NS_XMP_Rights</a>&nbsp;&nbsp;&nbsp;&quot;http://ns.adobe.com/xap/1.0/rights/&quot;</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The XML namespace for the XMP copyright schema. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c67379a9ffa425d0d7976a51c4f2f754"></a><!-- doxytag: member="XMP_Const.h::kXMP_NS_XMP_MM" ref="c67379a9ffa425d0d7976a51c4f2f754" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="XMP__Const_8h.html#c67379a9ffa425d0d7976a51c4f2f754">kXMP_NS_XMP_MM</a>&nbsp;&nbsp;&nbsp;&quot;http://ns.adobe.com/xap/1.0/mm/&quot;</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The XML namespace for the XMP digital asset management schema. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="308e156c325618acb2172e550929ebee"></a><!-- doxytag: member="XMP_Const.h::kXMP_NS_XMP_BJ" ref="308e156c325618acb2172e550929ebee" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="XMP__Const_8h.html#308e156c325618acb2172e550929ebee">kXMP_NS_XMP_BJ</a>&nbsp;&nbsp;&nbsp;&quot;http://ns.adobe.com/xap/1.0/bj/&quot;</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The XML namespace for the job management schema. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0bcb67d0dd0922504e3da7ca5c40c82a"></a><!-- doxytag: member="XMP_Const.h::kXMP_NS_PDF" ref="0bcb67d0dd0922504e3da7ca5c40c82a" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="XMP__Const_8h.html#0bcb67d0dd0922504e3da7ca5c40c82a">kXMP_NS_PDF</a>&nbsp;&nbsp;&nbsp;&quot;http://ns.adobe.com/pdf/1.3/&quot;</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The XML namespace for the PDF schema. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a1a6f38ebfcdb281c5bf2809859167c7"></a><!-- doxytag: member="XMP_Const.h::kXMP_NS_Photoshop" ref="a1a6f38ebfcdb281c5bf2809859167c7" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="XMP__Const_8h.html#a1a6f38ebfcdb281c5bf2809859167c7">kXMP_NS_Photoshop</a>&nbsp;&nbsp;&nbsp;&quot;http://ns.adobe.com/photoshop/1.0/&quot;</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The XML namespace for the Photoshop custom schema. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d12182e1df1652f56b5eec60c1fcdd8f"></a><!-- doxytag: member="XMP_Const.h::kXMP_NS_EXIF" ref="d12182e1df1652f56b5eec60c1fcdd8f" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="XMP__Const_8h.html#d12182e1df1652f56b5eec60c1fcdd8f">kXMP_NS_EXIF</a>&nbsp;&nbsp;&nbsp;&quot;http://ns.adobe.com/exif/1.0/&quot;</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The XML namespace for Adobe's EXIF schema. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="673355818b7b9224e8fec0fbc60ba00c"></a><!-- doxytag: member="XMP_Const.h::kXMP_NS_TIFF" ref="673355818b7b9224e8fec0fbc60ba00c" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="XMP__Const_8h.html#673355818b7b9224e8fec0fbc60ba00c">kXMP_NS_TIFF</a>&nbsp;&nbsp;&nbsp;&quot;http://ns.adobe.com/tiff/1.0/&quot;</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The XML namespace for Adobe's TIFF schema. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0a2d9c5f7beb27553214a7ad1df4f27e"></a><!-- doxytag: member="XMP_Const.h::kXMP_NS_XMP_T" ref="0a2d9c5f7beb27553214a7ad1df4f27e" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="XMP__Const_8h.html#0a2d9c5f7beb27553214a7ad1df4f27e">kXMP_NS_XMP_T</a>&nbsp;&nbsp;&nbsp;&quot;http://ns.adobe.com/xap/1.0/t/&quot;</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The XML namespace for the XMP text document schema. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="39afb495ffb24bb3082493c6811e65d0"></a><!-- doxytag: member="XMP_Const.h::kXMP_NS_XMP_T_PG" ref="39afb495ffb24bb3082493c6811e65d0" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="XMP__Const_8h.html#39afb495ffb24bb3082493c6811e65d0">kXMP_NS_XMP_T_PG</a>&nbsp;&nbsp;&nbsp;&quot;http://ns.adobe.com/xap/1.0/t/pg/&quot;</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The XML namespace for the XMP paged document schema. <br></td></tr>
+<tr><td colspan="2"><div class="groupHeader">XML namespace constants for qualifiers and structured property fields.</div></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b466db52a4b85cecfa04710682c1e671"></a><!-- doxytag: member="XMP_Const.h::kXMP_NS_XMP_IdentifierQual" ref="b466db52a4b85cecfa04710682c1e671" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="XMP__Const_8h.html#b466db52a4b85cecfa04710682c1e671">kXMP_NS_XMP_IdentifierQual</a>&nbsp;&nbsp;&nbsp;&quot;http://ns.adobe.com/xmp/Identifier/qual/1.0/&quot;</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The XML namespace for qualifiers of the xmp:Identifier property. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9618e013619aa92ebc808b62243d2ba8"></a><!-- doxytag: member="XMP_Const.h::kXMP_NS_XMP_Dimensions" ref="9618e013619aa92ebc808b62243d2ba8" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="XMP__Const_8h.html#9618e013619aa92ebc808b62243d2ba8">kXMP_NS_XMP_Dimensions</a>&nbsp;&nbsp;&nbsp;&quot;http://ns.adobe.com/xap/1.0/sType/Dimensions#&quot;</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The XML namespace for fields of the Dimensions type. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="935641acc7d01e782ad7a457a7ff338b"></a><!-- doxytag: member="XMP_Const.h::kXMP_NS_XMP_Image" ref="935641acc7d01e782ad7a457a7ff338b" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="XMP__Const_8h.html#935641acc7d01e782ad7a457a7ff338b">kXMP_NS_XMP_Image</a>&nbsp;&nbsp;&nbsp;&quot;http://ns.adobe.com/xap/1.0/g/img/&quot;</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The XML namespace for fields of a graphical image. Used for the Thumbnail type. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="861613273127156050b456eee11f6b0a"></a><!-- doxytag: member="XMP_Const.h::kXMP_NS_XMP_ResourceEvent" ref="861613273127156050b456eee11f6b0a" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="XMP__Const_8h.html#861613273127156050b456eee11f6b0a">kXMP_NS_XMP_ResourceEvent</a>&nbsp;&nbsp;&nbsp;&quot;http://ns.adobe.com/xap/1.0/sType/ResourceEvent#&quot;</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The XML namespace for fields of the ResourceEvent type. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9bf51f2653400645f7b5087e8c4e1c77"></a><!-- doxytag: member="XMP_Const.h::kXMP_NS_XMP_ResourceRef" ref="9bf51f2653400645f7b5087e8c4e1c77" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="XMP__Const_8h.html#9bf51f2653400645f7b5087e8c4e1c77">kXMP_NS_XMP_ResourceRef</a>&nbsp;&nbsp;&nbsp;&quot;http://ns.adobe.com/xap/1.0/sType/ResourceRef#&quot;</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The XML namespace for fields of the ResourceRef type. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b4923bed71ab29c6aa88debe8816c0a2"></a><!-- doxytag: member="XMP_Const.h::kXMP_NS_XMP_ST_Version" ref="b4923bed71ab29c6aa88debe8816c0a2" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="XMP__Const_8h.html#b4923bed71ab29c6aa88debe8816c0a2">kXMP_NS_XMP_ST_Version</a>&nbsp;&nbsp;&nbsp;&quot;http://ns.adobe.com/xap/1.0/sType/Version#&quot;</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The XML namespace for fields of the Version type. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c7dc4d65bcbba2862e410cc8cfdff6f6"></a><!-- doxytag: member="XMP_Const.h::kXMP_NS_XMP_ST_Job" ref="c7dc4d65bcbba2862e410cc8cfdff6f6" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="XMP__Const_8h.html#c7dc4d65bcbba2862e410cc8cfdff6f6">kXMP_NS_XMP_ST_Job</a>&nbsp;&nbsp;&nbsp;&quot;http://ns.adobe.com/xap/1.0/sType/Job#&quot;</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The XML namespace for fields of the JobRef type. <br></td></tr>
+<tr><td colspan="2"><div class="groupHeader">XML namespace constants from outside Adobe.</div></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="44453f0d0a1dd295d41722c2387b36fa"></a><!-- doxytag: member="XMP_Const.h::kXMP_NS_DC" ref="44453f0d0a1dd295d41722c2387b36fa" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="XMP__Const_8h.html#44453f0d0a1dd295d41722c2387b36fa">kXMP_NS_DC</a>&nbsp;&nbsp;&nbsp;&quot;http://purl.org/dc/elements/1.1/&quot;</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The XML namespace for the Dublin Core schema. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b794d3d798daf75a963398347dcbb79b"></a><!-- doxytag: member="XMP_Const.h::kXMP_NS_IPTCCore" ref="b794d3d798daf75a963398347dcbb79b" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="XMP__Const_8h.html#b794d3d798daf75a963398347dcbb79b">kXMP_NS_IPTCCore</a>&nbsp;&nbsp;&nbsp;&quot;http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/&quot;</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The XML namespace for the IPTC Core schema. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="276fac0f70893607afa3f09030ad84c7"></a><!-- doxytag: member="XMP_Const.h::kXMP_NS_RDF" ref="276fac0f70893607afa3f09030ad84c7" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="XMP__Const_8h.html#276fac0f70893607afa3f09030ad84c7">kXMP_NS_RDF</a>&nbsp;&nbsp;&nbsp;&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The XML namespace for RDF. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="97564c70460d1f235c8a41b8ac40cfe9"></a><!-- doxytag: member="XMP_Const.h::kXMP_NS_XML" ref="97564c70460d1f235c8a41b8ac40cfe9" args="" -->
+#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="XMP__Const_8h.html#97564c70460d1f235c8a41b8ac40cfe9">kXMP_NS_XML</a>&nbsp;&nbsp;&nbsp;&quot;http://www.w3.org/XML/1998/namespace&quot;</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The XML namespace for XML. <br></td></tr>
+<tr><td colspan="2"><br><h2>Typedefs</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">typedef __XMPMeta__ *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="XMP__Const_8h.html#5912613564f80e17eb10acef9236f70a">XMPMetaRef</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">An "ABI safe" pointer to the internal part of an XMP object. <a href="#5912613564f80e17eb10acef9236f70a"></a><br></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Special purpose callback functions</div></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="91efdc0a7fbe6e1d42ca34e6ce589b98"></a><!-- doxytag: member="XMP_Const.h::XMP_Status" ref="91efdc0a7fbe6e1d42ca34e6ce589b98" args="" -->
+typedef XMP_Int32&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="XMP__Const_8h.html#91efdc0a7fbe6e1d42ca34e6ce589b98">XMP_Status</a></td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A signed 32 bit integer used as a status result for the output callback routine. Zero means no error, all other values except -1 are private to the callback. The callback is wrapped to prevent exceptions being thrown across DLL boundaries. Any exceptions thrown out of the callback cause a return status of -1. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="36eab570ab85ff8fb5789661692d13c2"></a><!-- doxytag: member="XMP_Const.h::XMP_TextOutputProc" ref="36eab570ab85ff8fb5789661692d13c2" args="(void *refCon, XMP_StringPtr buffer, XMP_StringLen bufferSize)" -->
+typedef <a class="el" href="XMP__Const_8h.html#91efdc0a7fbe6e1d42ca34e6ce589b98">XMP_Status</a>(*)&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="XMP__Const_8h.html#36eab570ab85ff8fb5789661692d13c2">XMP_TextOutputProc</a> (void *refCon, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> buffer, <a class="el" href="XMP__Const_8h.html#9f7dcc184f901c713274edfdac5bcc9a">XMP_StringLen</a> bufferSize)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Direct text output from the XMP toolkit, such as debugging dumps, is done using client supplied callbacks. The callback is invoked one or more times for each line of output. The end of a line is signaled by a '<br>
+' character at the end of the buffer. Formatting newlines are never present in the middle of a buffer, but values of properties might contain any UTF-8 characters. A success/fail status is returned by the callback. Any failure result aborts the output. <br></td></tr>
+<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Exception codes.</div></td></tr>
+<tr><td colspan="2"><div class="groupText">XMP tookit errors result in throwing an <code>XMP_Error</code> exception. Any exception thrown within the XMP toolkit is caught in the toolkit and rethrown as an <code>XMP_Error</code>. The <code>XMP_Error</code> struct contains a numeric code and an English explanation. New numeric codes may be added at any time. There are typically many possible explanations for each numeric code. The explanations try to be precise about the specific circumstances causing the error.<p>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>The explanation string is for debugging use only. It must not be shown to users in a final product. It is written for developers not users, and never localized. </dd></dl>
+<br><br></div></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"></td></tr>
+
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Common C/C++ types and constants for the XMP toolkit.
+<p>
+================================================================================================ <hr><h2>Typedef Documentation</h2>
+<a class="anchor" name="5912613564f80e17eb10acef9236f70a"></a><!-- doxytag: member="XMP_Const.h::XMPMetaRef" ref="5912613564f80e17eb10acef9236f70a" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="XMP__Const_8h.html#5912613564f80e17eb10acef9236f70a">XMPMetaRef</a> </td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+An "ABI safe" pointer to the internal part of an XMP object.
+<p>
+<code>XMPMetaRef</code> is an "ABI safe" pointer to the internal part of an XMP object. It should be used for passing an XMP object across client DLL boundaries. See the discussion in <code><a class="el" href="TXMPMeta_8hpp.html">TXMPMeta.hpp</a></code>.
+</div>
+</div><p>
+<hr size="1"><address style="align: right;"><small>Generated on Thu May 3 14:54:58 2007 for Adobe XMP Toolkit by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address>
+</body>
+</html>
diff --git a/docs/XMPToolkit/XMP__Const_8h__incl.png b/docs/XMPToolkit/XMP__Const_8h__incl.png
new file mode 100644
index 0000000..c1bdbeb
--- /dev/null
+++ b/docs/XMPToolkit/XMP__Const_8h__incl.png
Binary files differ
diff --git a/docs/XMPToolkit/annotated.html b/docs/XMPToolkit/annotated.html
new file mode 100644
index 0000000..d3cb5e2
--- /dev/null
+++ b/docs/XMPToolkit/annotated.html
@@ -0,0 +1,31 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Adobe XMP Toolkit: Class List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.1 -->
+<div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul></div>
+<div class="tabs">
+ <ul>
+ <li id="current"><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul></div>
+<h1>Adobe XMP Toolkit Class List</h1>Here are the classes, structs, unions and interfaces with brief descriptions:<table>
+ <tr><td class="indexkey"><a class="el" href="classTXMPFiles.html">TXMPFiles&lt; tStringObj &gt;</a></td><td class="indexvalue">API for access to the "main" metadata in a file </td></tr>
+ <tr><td class="indexkey"><a class="el" href="classTXMPIterator.html">TXMPIterator&lt; tStringObj &gt;</a></td><td class="indexvalue">Template class for the XMP Toolkit iteration services </td></tr>
+ <tr><td class="indexkey"><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td class="indexvalue">Template class for the XMP Toolkit core services </td></tr>
+ <tr><td class="indexkey"><a class="el" href="classTXMPUtils.html">TXMPUtils&lt; tStringObj &gt;</a></td><td class="indexvalue">Template class for the XMP Toolkit utility services </td></tr>
+ <tr><td class="indexkey"><a class="el" href="structXMP__DateTime.html">XMP_DateTime</a></td><td class="indexvalue">The expanded type for a date and time. Dates and time in the serialized XMP are ISO 8601 strings. The <code><a class="el" href="structXMP__DateTime.html">XMP_DateTime</a></code> struct allows easy conversion with other formats </td></tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Thu May 3 14:54:58 2007 for Adobe XMP Toolkit by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address>
+</body>
+</html>
diff --git a/docs/XMPToolkit/classTXMPFiles-members.html b/docs/XMPToolkit/classTXMPFiles-members.html
new file mode 100644
index 0000000..b5deac5
--- /dev/null
+++ b/docs/XMPToolkit/classTXMPFiles-members.html
@@ -0,0 +1,40 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Adobe XMP Toolkit: Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.1 -->
+<div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul></div>
+<div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul></div>
+<h1>TXMPFiles&lt; tStringObj &gt; Member List</h1>This is the complete list of members for <a class="el" href="classTXMPFiles.html">TXMPFiles&lt; tStringObj &gt;</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classTXMPFiles.html#29a11a1539d6300da3fb4c7e9ea02bb6">CanPutXMP</a>(const SXMPMeta &amp;xmpObj)</td><td><a class="el" href="classTXMPFiles.html">TXMPFiles&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPFiles.html#eca89170c7aa3e2d56e30bff04dd7927">CloseFile</a>(XMP_OptionBits closeFlags=0)</td><td><a class="el" href="classTXMPFiles.html">TXMPFiles&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPFiles.html#f9931d081cb19f98c81e41786030765b">GetFileInfo</a>(tStringObj *filePath=0, XMP_OptionBits *openFlags=0, XMP_FileFormat *format=0, XMP_OptionBits *handlerFlags=0)</td><td><a class="el" href="classTXMPFiles.html">TXMPFiles&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPFiles.html#6ac78e3c7286ca8dcb41eaa007aa00e8">GetFormatInfo</a>(XMP_FileFormat format, XMP_OptionBits *handlerFlags=0)</td><td><a class="el" href="classTXMPFiles.html">TXMPFiles&lt; tStringObj &gt;</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPFiles.html#4ea1eda39f803322e10b2a554ef8ab06">GetThumbnail</a>(XMP_ThumbnailInfo *tnailInfo)</td><td><a class="el" href="classTXMPFiles.html">TXMPFiles&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPFiles.html#42ca0bbc5ac66a8de1710e03a7ff17b3">GetXMP</a>(SXMPMeta *xmpObj=0, tStringObj *xmpPacket=0, XMP_PacketInfo *packetInfo=0)</td><td><a class="el" href="classTXMPFiles.html">TXMPFiles&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPFiles.html#0874bbbf41c9490abfb613bfe297327d">Initialize</a>()</td><td><a class="el" href="classTXMPFiles.html">TXMPFiles&lt; tStringObj &gt;</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPFiles.html#fcd21cfe5d6f13c648c5541e161919cb">OpenFile</a>(XMP_StringPtr filePath, XMP_FileFormat format=kXMP_UnknownFile, XMP_OptionBits openFlags=0)</td><td><a class="el" href="classTXMPFiles.html">TXMPFiles&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPFiles.html#d3f7babdc07c7de0d0cd9a3362b4710a">PutXMP</a>(const SXMPMeta &amp;xmpObj)</td><td><a class="el" href="classTXMPFiles.html">TXMPFiles&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPFiles.html#7b86c130fdbd54b5ac158ec3fee93777">SetAbortProc</a>(XMP_AbortProc abortProc, void *abortArg)</td><td><a class="el" href="classTXMPFiles.html">TXMPFiles&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPFiles.html#1e8de80c252b60b332dc4bc524139fd8">Terminate</a>()</td><td><a class="el" href="classTXMPFiles.html">TXMPFiles&lt; tStringObj &gt;</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPFiles.html#14f01e38454178578fd25fff6024fd54">TXMPFiles</a>()</td><td><a class="el" href="classTXMPFiles.html">TXMPFiles&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPFiles.html#36abe01988d4ca3939138e871c7b75e7">TXMPFiles</a>(XMP_StringPtr filePath, XMP_FileFormat format=kXMP_UnknownFile, XMP_OptionBits openFlags=0)</td><td><a class="el" href="classTXMPFiles.html">TXMPFiles&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPFiles.html#cf343fb6771b482ca72d467233a6f920">TXMPFiles</a>(const TXMPFiles&lt; tStringObj &gt; &amp;original)</td><td><a class="el" href="classTXMPFiles.html">TXMPFiles&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPFiles.html#d986c7b2e2d82eaef6cf6a33e9d09b65">TXMPFiles</a>(XMPFilesRef xmpFilesObj)</td><td><a class="el" href="classTXMPFiles.html">TXMPFiles&lt; tStringObj &gt;</a></td><td></td></tr>
+</table><hr size="1"><address style="align: right;"><small>Generated on Thu May 3 14:54:58 2007 for Adobe XMP Toolkit by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address>
+</body>
+</html>
diff --git a/docs/XMPToolkit/classTXMPFiles.html b/docs/XMPToolkit/classTXMPFiles.html
new file mode 100644
index 0000000..689af11
--- /dev/null
+++ b/docs/XMPToolkit/classTXMPFiles.html
@@ -0,0 +1,527 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Adobe XMP Toolkit: TXMPFiles&lt; tStringObj &gt; Class Template Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.1 -->
+<div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul></div>
+<div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul></div>
+<h1>TXMPFiles&lt; tStringObj &gt; Class Template Reference</h1><!-- doxytag: class="TXMPFiles" -->API for access to the "main" metadata in a file.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="TXMPFiles_8hpp-source.html">TXMPFiles.hpp</a>&gt;</code>
+<p>
+<a href="classTXMPFiles-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Constructors and destructor</h2></td></tr>
+<tr><td colspan="2">The default constructor initializes an object that is associated with no file. The alternate constructors call OpenFile. The destructor automatically calls CloseFile if necessary. <br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="14f01e38454178578fd25fff6024fd54"></a><!-- doxytag: member="TXMPFiles::TXMPFiles" ref="14f01e38454178578fd25fff6024fd54" args="()" -->
+&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#14f01e38454178578fd25fff6024fd54">TXMPFiles</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The default constructor initializes an object that is associated with no file. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5eaa92724cc82d933a32eff9c4636739"></a><!-- doxytag: member="TXMPFiles::~TXMPFiles" ref="5eaa92724cc82d933a32eff9c4636739" args="()" -->
+virtual&nbsp;</td><td class="memItemRight" valign="bottom"><b>~TXMPFiles</b> () throw ()</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="36abe01988d4ca3939138e871c7b75e7"></a><!-- doxytag: member="TXMPFiles::TXMPFiles" ref="36abe01988d4ca3939138e871c7b75e7" args="(XMP_StringPtr filePath, XMP_FileFormat format=kXMP_UnknownFile, XMP_OptionBits openFlags=0)" -->
+&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#36abe01988d4ca3939138e871c7b75e7">TXMPFiles</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> filePath, XMP_FileFormat format=kXMP_UnknownFile, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> openFlags=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">These alternate constructors call <code>OpenFile</code>. The second form is a trivial overload that calls the first form passing <code>filePath.c_str()</code>. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f540b3ea689a6d7381dca4f52132a4ac"></a><!-- doxytag: member="TXMPFiles::TXMPFiles" ref="f540b3ea689a6d7381dca4f52132a4ac" args="(const tStringObj &amp;filePath, XMP_FileFormat format=kXMP_UnknownFile, XMP_OptionBits openFlags=0)" -->
+&nbsp;</td><td class="memItemRight" valign="bottom"><b>TXMPFiles</b> (const tStringObj &amp;filePath, XMP_FileFormat format=kXMP_UnknownFile, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> openFlags=0)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="cf343fb6771b482ca72d467233a6f920"></a><!-- doxytag: member="TXMPFiles::TXMPFiles" ref="cf343fb6771b482ca72d467233a6f920" args="(const TXMPFiles&lt; tStringObj &gt; &amp;original)" -->
+&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#cf343fb6771b482ca72d467233a6f920">TXMPFiles</a> (const <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt; &amp;original)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The copy constructor and assignment operator increment an internal reference count, they do not perform a deep copy. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3f1483fcc92860460d3772216dfaef81"></a><!-- doxytag: member="TXMPFiles::operator=" ref="3f1483fcc92860460d3772216dfaef81" args="(const TXMPFiles&lt; tStringObj &gt; &amp;rhs)" -->
+void&nbsp;</td><td class="memItemRight" valign="bottom"><b>operator=</b> (const <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt; &amp;rhs)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d986c7b2e2d82eaef6cf6a33e9d09b65"></a><!-- doxytag: member="TXMPFiles::TXMPFiles" ref="d986c7b2e2d82eaef6cf6a33e9d09b65" args="(XMPFilesRef xmpFilesObj)" -->
+&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#d986c7b2e2d82eaef6cf6a33e9d09b65">TXMPFiles</a> (XMPFilesRef xmpFilesObj)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The "ref" constructor and <code>GetInternalRef</code> serve the same purpose as their analogs in SXMPMeta, safely passing <code>SXMPFiles</code> references across DLL boundaries where the clients might have used different string types when instantiating <code><a class="el" href="classTXMPFiles.html">TXMPFiles</a></code>. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="311fc36fdf7270fe05b1c531cdbbd009"></a><!-- doxytag: member="TXMPFiles::GetInternalRef" ref="311fc36fdf7270fe05b1c531cdbbd009" args="()" -->
+XMPFilesRef&nbsp;</td><td class="memItemRight" valign="bottom"><b>GetInternalRef</b> ()</td></tr>
+
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">OpenFile, CloseFile, and related file-oriented operations</div></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#fcd21cfe5d6f13c648c5541e161919cb">OpenFile</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> filePath, XMP_FileFormat format=kXMP_UnknownFile, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> openFlags=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Open a file for metadata access. <a href="#fcd21cfe5d6f13c648c5541e161919cb"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#eca89170c7aa3e2d56e30bff04dd7927">CloseFile</a> (<a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> closeFlags=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Close an opened file. <a href="#eca89170c7aa3e2d56e30bff04dd7927"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#f9931d081cb19f98c81e41786030765b">GetFileInfo</a> (tStringObj *filePath=0, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> *openFlags=0, XMP_FileFormat *format=0, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> *handlerFlags=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get basic information about an opened file. <a href="#f9931d081cb19f98c81e41786030765b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#7b86c130fdbd54b5ac158ec3fee93777">SetAbortProc</a> (XMP_AbortProc abortProc, void *abortArg)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the callback function used to check for a user signaled abort. <a href="#7b86c130fdbd54b5ac158ec3fee93777"></a><br></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Metadata Access Functions</div></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#42ca0bbc5ac66a8de1710e03a7ff17b3">GetXMP</a> (SXMPMeta *xmpObj=0, tStringObj *xmpPacket=0, XMP_PacketInfo *packetInfo=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Obtain the XMP. <a href="#42ca0bbc5ac66a8de1710e03a7ff17b3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#4ea1eda39f803322e10b2a554ef8ab06">GetThumbnail</a> (XMP_ThumbnailInfo *tnailInfo)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Obtain the native thumbnail. <a href="#4ea1eda39f803322e10b2a554ef8ab06"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#d3f7babdc07c7de0d0cd9a3362b4710a">PutXMP</a> (const SXMPMeta &amp;xmpObj)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Update the XMP. <a href="#d3f7babdc07c7de0d0cd9a3362b4710a"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#29a11a1539d6300da3fb4c7e9ea02bb6">CanPutXMP</a> (const SXMPMeta &amp;xmpObj)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determine if the XMP can be updated. <a href="#29a11a1539d6300da3fb4c7e9ea02bb6"></a><br></td></tr>
+<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Initialization and termination</div></td></tr>
+<tr><td colspan="2"><div class="groupText"><code>SXMPFiles</code> must be initialized before use and may be terminated when done. <br><br></div></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6e521c034728b59ab55213a9d8203d1e"></a><!-- doxytag: member="TXMPFiles::GetVersionInfo" ref="6e521c034728b59ab55213a9d8203d1e" args="(XMP_VersionInfo *versionInfo)" -->
+static void&nbsp;</td><td class="memItemRight" valign="bottom"><b>GetVersionInfo</b> (XMP_VersionInfo *versionInfo)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0874bbbf41c9490abfb613bfe297327d"></a><!-- doxytag: member="TXMPFiles::Initialize" ref="0874bbbf41c9490abfb613bfe297327d" args="()" -->
+static bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#0874bbbf41c9490abfb613bfe297327d">Initialize</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>Initialize</code> must be called before using <code>SXMPFiles</code>. It returns a Boolean success/failure value. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="794e1830a84a6328eaa1995ba5aa6874"></a><!-- doxytag: member="TXMPFiles::Initialize" ref="794e1830a84a6328eaa1995ba5aa6874" args="(XMP_OptionBits options)" -->
+static bool&nbsp;</td><td class="memItemRight" valign="bottom"><b>Initialize</b> (<a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1e8de80c252b60b332dc4bc524139fd8"></a><!-- doxytag: member="TXMPFiles::Terminate" ref="1e8de80c252b60b332dc4bc524139fd8" args="()" -->
+static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#1e8de80c252b60b332dc4bc524139fd8">Terminate</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>Terminate</code> may be called when done using <code>SXMPFiles</code>. It deallocates global data structures created by <code>Initialize</code>. <br></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Static Functions</div></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPFiles.html#6ac78e3c7286ca8dcb41eaa007aa00e8">GetFormatInfo</a> (XMP_FileFormat format, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> *handlerFlags=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determine the supported features for a given file format. <a href="#6ac78e3c7286ca8dcb41eaa007aa00e8"></a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<h3>template&lt;class tStringObj&gt;<br>
+ class TXMPFiles&lt; tStringObj &gt;</h3>
+
+API for access to the "main" metadata in a file.
+<p>
+<code><a class="el" href="classTXMPFiles.html">TXMPFiles</a></code> provides the API for the Adobe XMP Toolkit's File Handler component. This provides convenient access to the main, or document level, XMP for a file. The general model is to open a file, read and write the metadata, then close the file. While open, portions of the file might be maintained in RAM data structures. Memory usage can vary considerably depending on file format and access options. The file may be opened for read-only or read-write access, with typical exclusion for both modes.<p>
+Errors result in the throw of an <code>XMPError</code> exception.<p>
+The template is instantiated with a string object class. This allows a clean implementation that provides two major benefits: output string storage is fully owned by the client and access is fully thread safe. The template parameter, class <code>tStringObj</code>, is described in the XMP.hpp umbrella header.<p>
+To use <a class="el" href="classTXMPFiles.html">TXMPFiles</a> define TXMP_STRING_TYPE and XMP_INCLUDE_XMPFILES, then include the XMP.hpp umbrella header: <div class="fragment"><pre class="fragment"><span class="preprocessor"> #define TXMP_STRING_TYPE std::string</span>
+<span class="preprocessor"></span><span class="preprocessor"> #define XMP_INCLUDE_XMPFILES 1</span>
+<span class="preprocessor"> #include "XMP.hpp"</span>
+</pre></div>
+<p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="6ac78e3c7286ca8dcb41eaa007aa00e8"></a><!-- doxytag: member="TXMPFiles::GetFormatInfo" ref="6ac78e3c7286ca8dcb41eaa007aa00e8" args="(XMP_FileFormat format, XMP_OptionBits *handlerFlags=0)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">static bool <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::GetFormatInfo </td>
+ <td>(</td>
+ <td class="paramtype">XMP_FileFormat&nbsp;</td>
+ <td class="paramname"> <em>format</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> *&nbsp;</td>
+ <td class="paramname"> <em>handlerFlags</em> = <code>0</code></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Determine the supported features for a given file format.
+<p>
+The supported features can vary quite a bit among file formats, depending on both the general capabilities of the format and the implementation of the handler for that format.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>format</em>&nbsp;</td><td>The format whose support flags are desired.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>handlerFlags</em>&nbsp;</td><td>A set of option bits showing the support for this format:</td></tr>
+ </table>
+</dl>
+<ul>
+<li>kXMPFiles_CanInjectXMP - Can inject first-time XMP into an existing file. </li>
+<li>kXMPFiles_CanExpand - Can expand XMP or other metadata in an existing file. </li>
+<li>kXMPFiles_CanRewrite - Can copy one file to another, writing new metadata. </li>
+<li>kXMPFiles_CanReconcile - Supports reconciliation between XMP and other forms. </li>
+<li>kXMPFiles_AllowsOnlyXMP - Allows access to just the XMP, ignoring other forms. </li>
+<li>kXMPFiles_ReturnsRawPacket - File handler returns raw XMP packet information and string. </li>
+<li>kXMPFiles_ReturnsTNail - File handler returns native thumbnail information.</li>
+</ul>
+The kXMPFiles_AllowsOnlyXMP flag is only meaningful if kXMPFiles_CanReconcile is set.<p>
+If kXMPFiles_ReturnsRawPacket is set, the returned packet information might have an offset of -1 to indicate an unknown offset. While all file handlers should be able to return the raw packet, some might not know the offset of the packet within the file. This is typical in cases where external libraries are used. These cases might not even allow return of the raw packet.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns true if the format has explicit "smart" support. Returns false if the format is handled by the default packet scanning plus heuristics. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="fcd21cfe5d6f13c648c5541e161919cb"></a><!-- doxytag: member="TXMPFiles::OpenFile" ref="fcd21cfe5d6f13c648c5541e161919cb" args="(XMP_StringPtr filePath, XMP_FileFormat format=kXMP_UnknownFile, XMP_OptionBits openFlags=0)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">bool <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::OpenFile </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>filePath</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">XMP_FileFormat&nbsp;</td>
+ <td class="paramname"> <em>format</em> = <code>kXMP_UnknownFile</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a>&nbsp;</td>
+ <td class="paramname"> <em>openFlags</em> = <code>0</code></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Open a file for metadata access.
+<p>
+Opens a file for the requested forms of metadata access. Opening the file at a minimum causes the raw XMP packet to be read from the file. If the file handler supports legacy metadata reconciliation then legacy metadata will also be read, unless kXMPFiles_OpenOnlyXMP is passed. If the file handler supports native thumbnails and kXMPFiles_OpenCacheTNail is passed then the native thumbnail will also be cached.<p>
+If the file is opened for read-only access (passing kXMPFiles_OpenForRead), then the disk file itself will be closed after reading the data from it. The XMPFiles object will not be "closed" though, it is still necessary to call CloseFile when finished using it. Other methods (GetXMP, etc.) can only be used between the OpenFile and CloseFile calls. The XMPFiles destructor will not call CloseFile, any pending updates will be lost.<p>
+If the file is opened for update (passing kXMPFiles_OpenForUpdate), then the disk file remains open until CloseFile is called. The disk file is only updated once, when Close file is called, no matter how many calls are made to PutXMP.<p>
+Ideally the XMP is not parsed and legacy reconciliation is not performed until GetXMP is called. This is not guaranteed though, specific file handlers might do earlier parsing of the XMP. This delayed parsing and the early disk file close for read-only access are optimizations to help clients implementing file browsers. They can access the file briefly and possibly display a thumbnail, then postpone more expensive XMP processing until later.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>filePath</em>&nbsp;</td><td>The UTF-8 path for the file, appropriate for the local OS. Overloads are declared to pass the path as either a "const char *" or a string object.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>format</em>&nbsp;</td><td>The format of the file. If the format is unknown pass <code>kXMP_UnknownFile</code> and the format will be determined from the file content. The first handler to check will be guessed from the file's extension. Passing any other format value is generally just a hint about what file handler to try first (instead of the one based on the extension). If the kXMPFiles_OpenStrictly is set, then any format other than kXMP_UnknownFile requires that the file actually be that format, an exception is thrown if not.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>openFlags</em>&nbsp;</td><td>A set of option bits describing the desired access. By default (zero) the file is opened for read-only access and the format handler decides on the level of reconciliation that will be performed. By default a best effort will be made to locate the correct XMP and to reconcile XMP with other forms (if reconciliation is done). The option <code>kXMPFiles_OpenStrictly</code> may be used to force more strict rules, resulting is exceptions for errors. The definition of strictness is specific to each handler, there may be no difference.</td></tr>
+ </table>
+</dl>
+The defined openFlag bits are:<p>
+<ul>
+<li>kXMPFiles_OpenForRead - Open for read-only access. </li>
+<li>kXMPFiles_OpenForUpdate - Open for reading and writing. </li>
+<li>kXMPFiles_OpenOnlyXMP - Only the XMP is wanted, no reconciliation. </li>
+<li>kXMPFiles_OpenCacheTNail - Cache thumbnail if possible, GetThumbnail will be called. </li>
+<li>kXMPFiles_OpenStrictly - Be strict about locating XMP and reconciling with other forms. </li>
+<li>kXMPFiles_OpenUseSmartHandler - Require the use of a smart handler. </li>
+<li>kXMPFiles_OpenUsePacketScanning - Force packet scanning, don't use a smart handler.</li>
+</ul>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns true if the file is succesfully opened and attached to a file handler. Returns false for "anticipated" problems, e.g. passing kXMPFiles_OpenUseSmartHandler but not having an appropriate smart handler. Throws an exception for serious problems. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="eca89170c7aa3e2d56e30bff04dd7927"></a><!-- doxytag: member="TXMPFiles::CloseFile" ref="eca89170c7aa3e2d56e30bff04dd7927" args="(XMP_OptionBits closeFlags=0)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">void <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::CloseFile </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a>&nbsp;</td>
+ <td class="paramname"> <em>closeFlags</em> = <code>0</code> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Close an opened file.
+<p>
+Performs any necessary output to the file and closes it. Files that are opened for update are written to only when closing.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>closeFlags</em>&nbsp;</td><td>A set of bit flags for optional closing actions.</td></tr>
+ </table>
+</dl>
+The defined closeFlags bits are:<p>
+<ul>
+<li>kXMPFiles_UpdateSafely - Write into a temporary file then swap for crash safety. </li>
+</ul>
+
+</div>
+</div><p>
+<a class="anchor" name="f9931d081cb19f98c81e41786030765b"></a><!-- doxytag: member="TXMPFiles::GetFileInfo" ref="f9931d081cb19f98c81e41786030765b" args="(tStringObj *filePath=0, XMP_OptionBits *openFlags=0, XMP_FileFormat *format=0, XMP_OptionBits *handlerFlags=0)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">bool <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::GetFileInfo </td>
+ <td>(</td>
+ <td class="paramtype">tStringObj *&nbsp;</td>
+ <td class="paramname"> <em>filePath</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> *&nbsp;</td>
+ <td class="paramname"> <em>openFlags</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">XMP_FileFormat *&nbsp;</td>
+ <td class="paramname"> <em>format</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> *&nbsp;</td>
+ <td class="paramname"> <em>handlerFlags</em> = <code>0</code></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Get basic information about an opened file.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>filePath</em>&nbsp;</td><td>If not null, returns the path passed to OpenFile.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>openFlags</em>&nbsp;</td><td>If not null, returns the flags passed to OpenFile.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>format</em>&nbsp;</td><td>If not null, returns the format of the file.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>handlerFlags</em>&nbsp;</td><td>If not null, returns the handler's capability flags.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns true if a file is opened, false otherwise. This notion of "open" really means that OpenFile has been called but CloseFile has not. The actual disk file might be closed in the host file system sense, as explained for OpenFile. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="7b86c130fdbd54b5ac158ec3fee93777"></a><!-- doxytag: member="TXMPFiles::SetAbortProc" ref="7b86c130fdbd54b5ac158ec3fee93777" args="(XMP_AbortProc abortProc, void *abortArg)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">void <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::SetAbortProc </td>
+ <td>(</td>
+ <td class="paramtype">XMP_AbortProc&nbsp;</td>
+ <td class="paramname"> <em>abortProc</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>abortArg</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Set the callback function used to check for a user signaled abort.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>abortProc</em>&nbsp;</td><td>The callback function used to check for a user signaled abort. It will be called periodically to allow an abort of time consuming operations. The abort results in an exception being thrown. The callback function should return true to signal an abort.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>abortArg</em>&nbsp;</td><td>An argument passed to the callback function. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="42ca0bbc5ac66a8de1710e03a7ff17b3"></a><!-- doxytag: member="TXMPFiles::GetXMP" ref="42ca0bbc5ac66a8de1710e03a7ff17b3" args="(SXMPMeta *xmpObj=0, tStringObj *xmpPacket=0, XMP_PacketInfo *packetInfo=0)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">bool <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::GetXMP </td>
+ <td>(</td>
+ <td class="paramtype">SXMPMeta *&nbsp;</td>
+ <td class="paramname"> <em>xmpObj</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">tStringObj *&nbsp;</td>
+ <td class="paramname"> <em>xmpPacket</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">XMP_PacketInfo *&nbsp;</td>
+ <td class="paramname"> <em>packetInfo</em> = <code>0</code></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Obtain the XMP.
+<p>
+<code>GetXMP</code> is used to obtain the parsed XMP, and/or the raw XMP packet, and/or information about the raw XMP packet. If all parameters are null it simply tells if XMP is present or not. The options provided when the file was opened determine if reconciliation is done with other forms of metadata.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>xmpObj</em>&nbsp;</td><td>If not null, returns the parsed XMP.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>xmpPacket</em>&nbsp;</td><td>If not null, returns the raw XMP packet as stored in the file. The encoding of the packet is given in the packetInfo. The string will be empty if the low level file handler does not provide the raw packet.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>packetInfo</em>&nbsp;</td><td>If not null, returns the location and form of the raw XMP in the file. The charForm and writeable flag reflect the raw XMP in the file. The parsed XMP property values are always UTF-8. The writeable flag is taken from the packet trailer, it is only relevant for "format ignorant" writing.</td></tr>
+ </table>
+</dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>The packetInfo struct always reflects the state of the XMP in the file. The offset, length, and character form will not change as a result of calling <code>PutXMP</code> unless the file is also written.<p>
+Some file handlers might not return location or contents of the raw packet string. Check the <code>kXMPFiles_ReturnsRawPacket</code> bit returned by GetFormatInfo if you depend on this. If the low level file handler does not provide the raw packet location then the offset and length will both be 0, the charForm will be UTF-8, and the writeable flag will be false.</dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns true if the file has XMP, false otherwise. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="4ea1eda39f803322e10b2a554ef8ab06"></a><!-- doxytag: member="TXMPFiles::GetThumbnail" ref="4ea1eda39f803322e10b2a554ef8ab06" args="(XMP_ThumbnailInfo *tnailInfo)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">bool <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::GetThumbnail </td>
+ <td>(</td>
+ <td class="paramtype">XMP_ThumbnailInfo *&nbsp;</td>
+ <td class="paramname"> <em>tnailInfo</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Obtain the native thumbnail.
+<p>
+<code>GetThumbnail</code> is used to obtain native thumbnail information, if the associated file handler supports that and the thumbnail was cached by OpenFile. This requires that kXMPFiles_OpenCacheTNail be passed to OpenFile. The tnailInfo output pointer can be null, in which case GetThumbnail will simply tell if a recognized native thumbnail is present.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>tnailInfo</em>&nbsp;</td><td>If not null, returns information about a recognized native thumbnail, and some related information about the primary image if appropriate.</td></tr>
+ </table>
+</dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>The returned thumbnail information can be incomplete. What gets returned can depend on the file format, the file handler's capabilities, and the specific file content.</dd></dl>
+<ul>
+<li>The fullHeight, fullWIdth, and fullOrientation fields are only meaningful for image files. They are not meaningful for multi-page files such as PDF or InDesign, for dynamic audio or video files, etc. The fields will be zero if not meaningful or not determined.</li>
+</ul>
+<ul>
+<li>The tnailImage and tnailSize fields might be zero even if a "recognized" thumbnail is present. Being recognized means only that the handler has determined that the file does contain a native thumbnail. The thumbnail data might be of a format that the file handler cannot (or does not) return a single contiguous block of thumbnail data. A possible case of this is a TIFF uncompressed thumbnail, the handler might not have logic to gather the various disjoint pieces of the thumbnail from the overall TIFF stream.</li>
+</ul>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns true if a recognized native thumbnail is presentand the thumbnail was cached by OpenFile. This requires that kXMPFiles_OpenCacheTNail be passed to OpenFile. Note that GetThumbnail can return true but still not return an actual thumbnail image, see the above note. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="d3f7babdc07c7de0d0cd9a3362b4710a"></a><!-- doxytag: member="TXMPFiles::PutXMP" ref="d3f7babdc07c7de0d0cd9a3362b4710a" args="(const SXMPMeta &amp;xmpObj)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">void <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::PutXMP </td>
+ <td>(</td>
+ <td class="paramtype">const SXMPMeta &amp;&nbsp;</td>
+ <td class="paramname"> <em>xmpObj</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Update the XMP.
+<p>
+<code>PutXMP</code> supplies new XMP for the file. However, the file is not actully written until closed. The options provided when the file was opened determine if reconciliation is done with other forms of metadata. Overloads are provided to pass the XMP as an XMP object, a string object, or a "const char *" plus length.
+</div>
+</div><p>
+<a class="anchor" name="29a11a1539d6300da3fb4c7e9ea02bb6"></a><!-- doxytag: member="TXMPFiles::CanPutXMP" ref="29a11a1539d6300da3fb4c7e9ea02bb6" args="(const SXMPMeta &amp;xmpObj)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">bool <a class="el" href="classTXMPFiles.html">TXMPFiles</a>&lt; tStringObj &gt;::CanPutXMP </td>
+ <td>(</td>
+ <td class="paramtype">const SXMPMeta &amp;&nbsp;</td>
+ <td class="paramname"> <em>xmpObj</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Determine if the XMP can be updated.
+<p>
+<code>CanPutXMP</code> determines if the XMP can (probably) be updated. The provided XMP is only used to obtain the length of the serialized packet. The new XMP is not kept, calling this will not cause the file to be written when closed. Overloads are provided to pass the XMP as an XMP object, a string object, or a "const char *" plus length. This is implemented roughly as:<p>
+<div class="fragment"><pre class="fragment"> <span class="keywordtype">bool</span> <a class="code" href="classTXMPFiles.html#29a11a1539d6300da3fb4c7e9ea02bb6">CanPutXMP</a> ( <a class="code" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> xmpPacket )
+ {
+ XMP_FileFormat format;
+ this-&gt;<a class="code" href="classTXMPFiles.html#f9931d081cb19f98c81e41786030765b">GetFileInfo</a> ( 0, &amp;format, 0 );
+
+ <a class="code" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> formatFlags;
+ <a class="code" href="classTXMPFiles.html#6ac78e3c7286ca8dcb41eaa007aa00e8">GetFormatInfo</a> ( format, &amp;formatFlags );
+
+ <span class="keywordflow">if</span> ( (formatFlags &amp; kXMPFiles_CanInjectXMP) &amp;&amp; (formatFlags &amp; kXMPFiles_CanExpand) ) <span class="keywordflow">return</span> <span class="keyword">true</span>;
+
+ XMP_PacketInfo packetInfo;
+ <span class="keywordtype">bool</span> hasXMP = this-&gt;<a class="code" href="classTXMPFiles.html#42ca0bbc5ac66a8de1710e03a7ff17b3">GetXMP</a> ( 0, 0, &amp;packetInfo );
+
+ <span class="keywordflow">if</span> ( ! hasXMP ) {
+ <span class="keywordflow">if</span> ( formatFlags &amp; kXMPFiles_CanInjectXMP ) <span class="keywordflow">return</span> <span class="keyword">true</span>;
+ } <span class="keywordflow">else</span> {
+ <span class="keywordflow">if</span> ( (formatFlags &amp; kXMPFiles_CanExpand) ||
+ (packetInfo.length &gt;= strlen(xmpPacket)) ) <span class="keywordflow">return</span> <span class="keyword">true</span>;
+ }
+
+ <span class="keywordflow">return</span> <span class="keyword">false</span>;
+
+ }
+</pre></div>
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="TXMPFiles_8hpp-source.html">TXMPFiles.hpp</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Thu May 3 14:54:58 2007 for Adobe XMP Toolkit by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address>
+</body>
+</html>
diff --git a/docs/XMPToolkit/classTXMPIterator-members.html b/docs/XMPToolkit/classTXMPIterator-members.html
new file mode 100644
index 0000000..6f822f8
--- /dev/null
+++ b/docs/XMPToolkit/classTXMPIterator-members.html
@@ -0,0 +1,32 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Adobe XMP Toolkit: Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.1 -->
+<div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul></div>
+<div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul></div>
+<h1>TXMPIterator&lt; tStringObj &gt; Member List</h1>This is the complete list of members for <a class="el" href="classTXMPIterator.html">TXMPIterator&lt; tStringObj &gt;</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classTXMPIterator.html#124a1dd1ab3ff0d236e4d4b967dafcd9">Next</a>(tStringObj *schemaNS=0, tStringObj *propPath=0, tStringObj *propValue=0, XMP_OptionBits *options=0)</td><td><a class="el" href="classTXMPIterator.html">TXMPIterator&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPIterator.html#d767d731320d3f4c997c6ce9f7f8fa63">operator=</a>(const TXMPIterator&lt; tStringObj &gt; &amp;rhs)</td><td><a class="el" href="classTXMPIterator.html">TXMPIterator&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPIterator.html#30b4d78974b347e4fcd275f1f65a61b2">Skip</a>(XMP_OptionBits options)</td><td><a class="el" href="classTXMPIterator.html">TXMPIterator&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPIterator.html#88e855c18b2b15f7b8a5ccf3b9398352">TXMPIterator</a>(const TXMPIterator&lt; tStringObj &gt; &amp;original)</td><td><a class="el" href="classTXMPIterator.html">TXMPIterator&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPIterator.html#5c1bd03e776a91cbb6fd02991fe08e1b">TXMPIterator</a>(const TXMPMeta&lt; tStringObj &gt; &amp;xmpObj, XMP_StringPtr schemaNS, XMP_StringPtr propName, XMP_OptionBits options=0)</td><td><a class="el" href="classTXMPIterator.html">TXMPIterator&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPIterator.html#6b2b7a3d6359aec216adf32bdf7fb140">TXMPIterator</a>(XMP_StringPtr schemaNS, XMP_StringPtr propName, XMP_OptionBits options)</td><td><a class="el" href="classTXMPIterator.html">TXMPIterator&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPIterator.html#911554533e8a3f09ab8870bd54462196">~TXMPIterator</a>()</td><td><a class="el" href="classTXMPIterator.html">TXMPIterator&lt; tStringObj &gt;</a></td><td><code> [virtual]</code></td></tr>
+</table><hr size="1"><address style="align: right;"><small>Generated on Thu May 3 14:54:58 2007 for Adobe XMP Toolkit by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address>
+</body>
+</html>
diff --git a/docs/XMPToolkit/classTXMPIterator.html b/docs/XMPToolkit/classTXMPIterator.html
new file mode 100644
index 0000000..195b213
--- /dev/null
+++ b/docs/XMPToolkit/classTXMPIterator.html
@@ -0,0 +1,328 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Adobe XMP Toolkit: TXMPIterator&lt; tStringObj &gt; Class Template Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.1 -->
+<div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul></div>
+<div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul></div>
+<h1>TXMPIterator&lt; tStringObj &gt; Class Template Reference</h1><!-- doxytag: class="TXMPIterator" -->Template class for the XMP Toolkit iteration services.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="TXMPIterator_8hpp-source.html">TXMPIterator.hpp</a>&gt;</code>
+<p>
+<a href="classTXMPIterator-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPIterator.html#d767d731320d3f4c997c6ce9f7f8fa63">operator=</a> (const <a class="el" href="classTXMPIterator.html">TXMPIterator</a>&lt; tStringObj &gt; &amp;rhs)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Assignment operator, assigns the internal ref and increments the ref count. <a href="#d767d731320d3f4c997c6ce9f7f8fa63"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPIterator.html#88e855c18b2b15f7b8a5ccf3b9398352">TXMPIterator</a> (const <a class="el" href="classTXMPIterator.html">TXMPIterator</a>&lt; tStringObj &gt; &amp;original)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy constructor, creates a client object refering to the same internal object. <a href="#88e855c18b2b15f7b8a5ccf3b9398352"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPIterator.html#5c1bd03e776a91cbb6fd02991fe08e1b">TXMPIterator</a> (const <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt; &amp;xmpObj, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct an iterator for the properties within an XMP object. <a href="#5c1bd03e776a91cbb6fd02991fe08e1b"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPIterator.html#6b2b7a3d6359aec216adf32bdf7fb140">TXMPIterator</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct an iterator for the global tables of the XMP toolkit. <a href="#6b2b7a3d6359aec216adf32bdf7fb140"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="911554533e8a3f09ab8870bd54462196"></a><!-- doxytag: member="TXMPIterator::~TXMPIterator" ref="911554533e8a3f09ab8870bd54462196" args="()" -->
+virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPIterator.html#911554533e8a3f09ab8870bd54462196">~TXMPIterator</a> () throw ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destructor, typical virtual destructor. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPIterator.html#124a1dd1ab3ff0d236e4d4b967dafcd9">Next</a> (tStringObj *schemaNS=0, tStringObj *propPath=0, tStringObj *propValue=0, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> *options=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Visit the next node in the iteration. <a href="#124a1dd1ab3ff0d236e4d4b967dafcd9"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPIterator.html#30b4d78974b347e4fcd275f1f65a61b2">Skip</a> (<a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Skip some portion of the remaining iterations. <a href="#30b4d78974b347e4fcd275f1f65a61b2"></a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<h3>template&lt;class tStringObj&gt;<br>
+ class TXMPIterator&lt; tStringObj &gt;</h3>
+
+Template class for the XMP Toolkit iteration services.
+<p>
+This template class provides iteration services for the XMP Toolkit. It should be instantiated with a string class such as <code>std::string</code>. Please read the general usage notes for information on the overall architecture of the XMP API.<p>
+<code><a class="el" href="classTXMPIterator.html">TXMPIterator</a></code> provides a uniform means to iterate over several XMP data structures, including the schema and properties within an XMP object plus global tables such as registered namespaces. The template wraps a string class around the raw XMP API, so that output strings are automatically copied and access is fully thread safe. String objects are only necessary for output strings. Input string are literals and passed as typical C <code>const char *</code>.<p>
+The template parameter, class <code>TtStringObj</code>, is described in the XMP.hpp umbrella header.<p>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>Only XMP object iteration is implemented at this time. There are no table iterators yet.</dd></dl>
+Iteration over the schema and properties within an XMP object is the most important and complex use of <code>TTXMPIterator</code>. It is helpful to have a thorough understanding of the XMP data tree. One way to learn this is to create some complex XMP and examine the output of <code><a class="el" href="classTXMPMeta.html#976c1eb889f44080f76628805712b618">TXMPMeta::DumpObject</a></code>. This is also described in the XMP Specification, in the XMP Data Model chapter.<p>
+The top of the XMP data tree is a single root node. This does not explicitly appear in the dump and is never visited by an iterator (that is, it is never returned from <code><a class="el" href="classTXMPIterator.html#124a1dd1ab3ff0d236e4d4b967dafcd9">TXMPIterator::Next</a></code>). Beneath the root are schema nodes. These are just collectors for top level properties in the same namespace. They are created and destroyed implicitly. Beneath the schema nodes are the property nodes. The nodes below a property node depend on its type (simple, struct, or array) and whether it has qualifiers.<p>
+A <code><a class="el" href="classTXMPIterator.html">TXMPIterator</a></code> constructor defines a starting point for the iteration and options that control how it proceeds. By default the iteration starts at the root and visits all nodes beneath it in a depth first manner. The root node is not visited, the first visited node is a schema node. You can provide a schema name or property path to select a different starting node. By default this visits the named root node first then all nodes beneath it in a depth first manner.<p>
+The <code><a class="el" href="classTXMPIterator.html#124a1dd1ab3ff0d236e4d4b967dafcd9">TXMPIterator::Next</a></code> method delivers the schema URI, path, and option flags for the node being visited. If the node is simple it also delivers the value. Qualifiers for this node are visited next. The fields of a struct or items of an array are visited after the qualifiers of the parent.<p>
+The options to control the iteration are:<p>
+<ul>
+<li><code>kXMP_IterJustChildren</code> - Visit just the immediate children of the root. Skip the root itself and all nodes below the immediate children. This omits the qualifiers of the immediate children, the qualifier nodes being below what they qualify.</li>
+</ul>
+<ul>
+<li><code>kXMP_IterJustLeafNodes</code> - Visit just the leaf property nodes and their qualifiers.</li>
+</ul>
+<ul>
+<li><code>kXMP_IterJustLeafName</code> - Return just the leaf component of the node names. The default is to return the full path name.</li>
+</ul>
+<ul>
+<li><code>kXMP_IterIncludeAliases</code> - Include aliases as part of the iteration. Since aliases are not actual nodes the default iteration does not visit them.</li>
+</ul>
+<ul>
+<li><code>kXMP_IterOmitQualifiers</code> - Do not visit the qualifiers of a node. </li>
+</ul>
+
+<p>
+<hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" name="88e855c18b2b15f7b8a5ccf3b9398352"></a><!-- doxytag: member="TXMPIterator::TXMPIterator" ref="88e855c18b2b15f7b8a5ccf3b9398352" args="(const TXMPIterator&lt; tStringObj &gt; &amp;original)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classTXMPIterator.html">TXMPIterator</a>&lt; tStringObj &gt;::<a class="el" href="classTXMPIterator.html">TXMPIterator</a> </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classTXMPIterator.html">TXMPIterator</a>&lt; tStringObj &gt; &amp;&nbsp;</td>
+ <td class="paramname"> <em>original</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copy constructor, creates a client object refering to the same internal object.
+<p>
+The copy constructor creates a new client iterator that refers to the same underlying iterator.
+</div>
+</div><p>
+<a class="anchor" name="5c1bd03e776a91cbb6fd02991fe08e1b"></a><!-- doxytag: member="TXMPIterator::TXMPIterator" ref="5c1bd03e776a91cbb6fd02991fe08e1b" args="(const TXMPMeta&lt; tStringObj &gt; &amp;xmpObj, XMP_StringPtr schemaNS, XMP_StringPtr propName, XMP_OptionBits options=0)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classTXMPIterator.html">TXMPIterator</a>&lt; tStringObj &gt;::<a class="el" href="classTXMPIterator.html">TXMPIterator</a> </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt; &amp;&nbsp;</td>
+ <td class="paramname"> <em>xmpObj</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>schemaNS</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>propName</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a>&nbsp;</td>
+ <td class="paramname"> <em>options</em> = <code>0</code></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Construct an iterator for the properties within an XMP object.
+<p>
+Construct an iterator for the properties within an XMP object. The general operation of an XMP object iterator was described above. Overloaded forms are provided to iterate the entire data tree, properties within a specific schema, or a subtree rooted at a specific node.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>xmpObj</em>&nbsp;</td><td>The XMP object over which to iterate.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>schemaNS</em>&nbsp;</td><td>Optional schema namespace URI to restrict the iteration. Omitted (visit all schema) by passing 0 or "".</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>propName</em>&nbsp;</td><td>Optional property name to restrict the iteration. May be an arbitrary path expression. Omitted (visit all properties) by passing 0 or "". If not null/empty a schema URI must also be provided.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>options</em>&nbsp;</td><td>Option flags to control the iteration.</td></tr>
+ </table>
+</dl>
+The available option flags are:<p>
+<ul>
+<li><code>kXMP_IterJustChildren</code> - Just visit the immediate children of the root, default is subtree. </li>
+<li><code>kXMP_IterJustLeafNodes</code> - Just visit the leaf nodes, default visits all nodes. </li>
+<li><code>kXMP_IterJustLeafName</code> - Return just the leaf part of the path, default is the full path. </li>
+<li><code>kXMP_IterOmitQualifiers</code> - Omit all qualifiers. </li>
+</ul>
+
+</div>
+</div><p>
+<a class="anchor" name="6b2b7a3d6359aec216adf32bdf7fb140"></a><!-- doxytag: member="TXMPIterator::TXMPIterator" ref="6b2b7a3d6359aec216adf32bdf7fb140" args="(XMP_StringPtr schemaNS, XMP_StringPtr propName, XMP_OptionBits options)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classTXMPIterator.html">TXMPIterator</a>&lt; tStringObj &gt;::<a class="el" href="classTXMPIterator.html">TXMPIterator</a> </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>schemaNS</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>propName</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a>&nbsp;</td>
+ <td class="paramname"> <em>options</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Construct an iterator for the global tables of the XMP toolkit.
+<p>
+<dl class="note" compact><dt><b>Note:</b></dt><dd><b>Not yet implemented.</b> File a bug if you need this. </dd></dl>
+
+</div>
+</div><p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="d767d731320d3f4c997c6ce9f7f8fa63"></a><!-- doxytag: member="TXMPIterator::operator=" ref="d767d731320d3f4c997c6ce9f7f8fa63" args="(const TXMPIterator&lt; tStringObj &gt; &amp;rhs)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">void <a class="el" href="classTXMPIterator.html">TXMPIterator</a>&lt; tStringObj &gt;::operator= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classTXMPIterator.html">TXMPIterator</a>&lt; tStringObj &gt; &amp;&nbsp;</td>
+ <td class="paramname"> <em>rhs</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Assignment operator, assigns the internal ref and increments the ref count.
+<p>
+The assignment operator assigns the internal ref from the rhs object and increments the reference count on the underlying internal XMP iterator.
+</div>
+</div><p>
+<a class="anchor" name="124a1dd1ab3ff0d236e4d4b967dafcd9"></a><!-- doxytag: member="TXMPIterator::Next" ref="124a1dd1ab3ff0d236e4d4b967dafcd9" args="(tStringObj *schemaNS=0, tStringObj *propPath=0, tStringObj *propValue=0, XMP_OptionBits *options=0)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">bool <a class="el" href="classTXMPIterator.html">TXMPIterator</a>&lt; tStringObj &gt;::Next </td>
+ <td>(</td>
+ <td class="paramtype">tStringObj *&nbsp;</td>
+ <td class="paramname"> <em>schemaNS</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">tStringObj *&nbsp;</td>
+ <td class="paramname"> <em>propPath</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">tStringObj *&nbsp;</td>
+ <td class="paramname"> <em>propValue</em> = <code>0</code>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> *&nbsp;</td>
+ <td class="paramname"> <em>options</em> = <code>0</code></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Visit the next node in the iteration.
+<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns true if there was another node to visit, false if the iteration is done.</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>schemaNS</em>&nbsp;</td><td>A pointer to the string that is assigned the schema namespace URI of the current property. May be null if the value is not wanted.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>propPath</em>&nbsp;</td><td>A pointer to the string that is assigned the XPath name of the current property. May be null if the value is not wanted.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>propValue</em>&nbsp;</td><td>A pointer to the string that is assigned the value of the current property. May be null if the value is not wanted.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>options</em>&nbsp;</td><td>A pointer to the XMP_OptionBits variable that is assigned the flags describing the current property. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="30b4d78974b347e4fcd275f1f65a61b2"></a><!-- doxytag: member="TXMPIterator::Skip" ref="30b4d78974b347e4fcd275f1f65a61b2" args="(XMP_OptionBits options)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">void <a class="el" href="classTXMPIterator.html">TXMPIterator</a>&lt; tStringObj &gt;::Skip </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a>&nbsp;</td>
+ <td class="paramname"> <em>options</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Skip some portion of the remaining iterations.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>options</em>&nbsp;</td><td>Option flags to control the iteration.</td></tr>
+ </table>
+</dl>
+The available option flags are:<p>
+<ul>
+<li><code>kXMP_IterSkipSubtree</code> - Skip the subtree below the current node. </li>
+<li><code>kXMP_IterSkipSiblings</code> - Skip the subtree below and remaining siblings of the current node. </li>
+</ul>
+
+</div>
+</div><p>
+<hr>The documentation for this class was generated from the following file:<ul>
+<li><a class="el" href="TXMPIterator_8hpp-source.html">TXMPIterator.hpp</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Thu May 3 14:54:58 2007 for Adobe XMP Toolkit by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address>
+</body>
+</html>
diff --git a/docs/XMPToolkit/classTXMPMeta-members.html b/docs/XMPToolkit/classTXMPMeta-members.html
new file mode 100644
index 0000000..8df4145
--- /dev/null
+++ b/docs/XMPToolkit/classTXMPMeta-members.html
@@ -0,0 +1,93 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Adobe XMP Toolkit: Member List</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.1 -->
+<div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul></div>
+<div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul></div>
+<h1>TXMPMeta&lt; tStringObj &gt; Member List</h1>This is the complete list of members for <a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a>, including all inherited members.<p><table>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#00d7314dc970ad390499ce9db27d314a">AppendArrayItem</a>(XMP_StringPtr schemaNS, XMP_StringPtr arrayName, XMP_OptionBits arrayOptions, XMP_StringPtr itemValue, XMP_OptionBits itemOptions=0)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#4f768a8cb35cabff1cf4187aa6a88dd3">AppendArrayItem</a>(XMP_StringPtr schemaNS, XMP_StringPtr arrayName, XMP_OptionBits arrayOptions, const tStringObj &amp;itemValue, XMP_OptionBits itemOptions=0)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#6ca653436995bbb76315efe7934afd4c">Clone</a>(XMP_OptionBits options=0) const </td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#b79aae864b3ce190d0699252f48e0acc">CountArrayItems</a>(XMP_StringPtr schemaNS, XMP_StringPtr arrayName) const </td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#af64964e983235247ef65c86a42a4675">DeleteAlias</a>(XMP_StringPtr aliasNS, XMP_StringPtr aliasProp)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#bc1211f47225b5973a170ff952743264">DeleteArrayItem</a>(XMP_StringPtr schemaNS, XMP_StringPtr arrayName, XMP_Index itemIndex)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#3f989597e95db929676273cacd4ea09a">DeleteNamespace</a>(XMP_StringPtr namespaceURI)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#c8b555ba99904fa49bb4851a60cc3844">DeleteProperty</a>(XMP_StringPtr schemaNS, XMP_StringPtr propName)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#8ce15f7de7fd3b258f07158ab5fa88be">DeleteQualifier</a>(XMP_StringPtr schemaNS, XMP_StringPtr propName, XMP_StringPtr qualNS, XMP_StringPtr qualName)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#bc258e027780a15be65a88fcfd4e1fd4">DeleteStructField</a>(XMP_StringPtr schemaNS, XMP_StringPtr structName, XMP_StringPtr fieldNS, XMP_StringPtr fieldName)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#492465c588d6d4cb8e30f94790e66f58">DoesArrayItemExist</a>(XMP_StringPtr schemaNS, XMP_StringPtr arrayName, XMP_Index itemIndex) const </td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#f22b116d71ecbbebea016ec5337e7066">DoesPropertyExist</a>(XMP_StringPtr schemaNS, XMP_StringPtr propName) const </td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#81347a92becd387a14f4d47c582f129a">DoesQualifierExist</a>(XMP_StringPtr schemaNS, XMP_StringPtr propName, XMP_StringPtr qualNS, XMP_StringPtr qualName) const </td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#9261b80d62e77a10ff1a89843bfa10a5">DoesStructFieldExist</a>(XMP_StringPtr schemaNS, XMP_StringPtr structName, XMP_StringPtr fieldNS, XMP_StringPtr fieldName) const </td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#afb027f200b85467298d237a0c23949b">DumpAliases</a>(XMP_TextOutputProc outProc, void *refCon)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#44250140a710c0b7c5cc0881e387d004">DumpNamespaces</a>(XMP_TextOutputProc outProc, void *refCon)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#976c1eb889f44080f76628805712b618">DumpObject</a>(XMP_TextOutputProc outProc, void *refCon) const </td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#c64a4251d157937f69b73f2ffac4f7cc">GetArrayItem</a>(XMP_StringPtr schemaNS, XMP_StringPtr arrayName, XMP_Index itemIndex, tStringObj *itemValue, XMP_OptionBits *options) const </td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#12b2435ba039c62a164951948c016eb4">GetGlobalOptions</a>()</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#4d35b44f1f017a27772ee902a3dacf04">GetInternalRef</a>() const</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#eefe49bbf669770d769f4fe0ea566bd0">GetLocalizedText</a>(XMP_StringPtr schemaNS, XMP_StringPtr altTextName, XMP_StringPtr genericLang, XMP_StringPtr specificLang, tStringObj *actualLang, tStringObj *itemValue, XMP_OptionBits *options) const </td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#f28589472d8c0397db6cef868f2b8c97">GetNamespacePrefix</a>(XMP_StringPtr namespaceURI, tStringObj *namespacePrefix)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#a20c84e7549d0a3252fa29a1e83a757a">GetNamespaceURI</a>(XMP_StringPtr namespacePrefix, tStringObj *namespaceURI)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#b0d179ed95487d4fd4f2680c1fbe0d40">GetObjectName</a>(tStringObj *name) const </td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#39aeaf9eb83cfc1c5455807b95f055f9">GetObjectOptions</a>() const</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#06a3241c7fa5df87f61dff02fca23a0c">GetProperty</a>(XMP_StringPtr schemaNS, XMP_StringPtr propName, tStringObj *propValue, XMP_OptionBits *options) const </td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#dcf8a1959a8bd42641a42cbd4d64a5b7">GetProperty_Bool</a>(XMP_StringPtr schemaNS, XMP_StringPtr propName, bool *propValue, XMP_OptionBits *options) const </td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#2f561295e73047ee90765558d29bd650">GetProperty_Date</a>(XMP_StringPtr schemaNS, XMP_StringPtr propName, XMP_DateTime *propValue, XMP_OptionBits *options) const </td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#7708c31c9af3e740b27a4893dcd9aa47">GetProperty_Float</a>(XMP_StringPtr schemaNS, XMP_StringPtr propName, double *propValue, XMP_OptionBits *options) const </td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#3b6ba486c02607b544917091c43b05cc">GetProperty_Int</a>(XMP_StringPtr schemaNS, XMP_StringPtr propName, long *propValue, XMP_OptionBits *options) const </td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#d1a6629b0466981b67d31c9dc3840ea7">GetProperty_Int64</a>(XMP_StringPtr schemaNS, XMP_StringPtr propName, long long *propValue, XMP_OptionBits *options) const</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#2cc58d8316043b035643e7c21633bc13">GetQualifier</a>(XMP_StringPtr schemaNS, XMP_StringPtr propName, XMP_StringPtr qualNS, XMP_StringPtr qualName, tStringObj *qualValue, XMP_OptionBits *options) const </td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#e99d2bc414d5cd68851147aef6710d4a">GetStructField</a>(XMP_StringPtr schemaNS, XMP_StringPtr structName, XMP_StringPtr fieldNS, XMP_StringPtr fieldName, tStringObj *fieldValue, XMP_OptionBits *options) const</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#5415cfc01a9cb8786939246571a23a9d">GetVersionInfo</a>(XMP_VersionInfo *info)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#bfddf1df0e01ab33d5636a80edc973ca">Initialize</a>()</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#4d5a601c9b77f6f6ab5f14e658de58ef">operator=</a>(const TXMPMeta&lt; tStringObj &gt; &amp;rhs)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#7b383f5b357fff040cdbde82f4f43f26">ParseFromBuffer</a>(XMP_StringPtr buffer, XMP_StringLen bufferSize, XMP_OptionBits options=0)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#b9463c7459125ca0038db2e586c5e4df">RegisterAlias</a>(XMP_StringPtr aliasNS, XMP_StringPtr aliasProp, XMP_StringPtr actualNS, XMP_StringPtr actualProp, XMP_OptionBits arrayForm=kXMP_NoOptions)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#4c69d31a37ff24c85679229c479aa1ac">RegisterNamespace</a>(XMP_StringPtr namespaceURI, XMP_StringPtr suggestedPrefix, tStringObj *registeredPrefix)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#b77cf73fa0cc63d845f113b3d1c83602">RegisterStandardAliases</a>(XMP_StringPtr schemaNS)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#c4b9c75202f2b961ad92f10a9e504e9a">ResolveAlias</a>(XMP_StringPtr aliasNS, XMP_StringPtr aliasProp, tStringObj *actualNS, tStringObj *actualProp, XMP_OptionBits *arrayForm)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#2774a6f15ae22f0002201b58c46bfb49">SerializeToBuffer</a>(tStringObj *rdfString, XMP_OptionBits options, XMP_StringLen padding, XMP_StringPtr newline, XMP_StringPtr indent=&quot;&quot;, XMP_Index baseIndent=0) const </td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#34143727d979b47a2f2209367aec9a1c">SerializeToBuffer</a>(tStringObj *rdfString, XMP_OptionBits options=0, XMP_StringLen padding=0) const</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#1570eb89d613b4a94ca572e4644168cc">SetArrayItem</a>(XMP_StringPtr schemaNS, XMP_StringPtr arrayName, XMP_Index itemIndex, XMP_StringPtr itemValue, XMP_OptionBits options=0)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#15720ee8e732232fa25989870cf99846">SetArrayItem</a>(XMP_StringPtr schemaNS, XMP_StringPtr arrayName, XMP_Index itemIndex, const tStringObj &amp;itemValue, XMP_OptionBits options=0)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#e7bb38d9b3857b08106630a386b47332">SetGlobalOptions</a>(XMP_OptionBits options)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#f9531b949a462f5663b1f3fd99464c19">SetLocalizedText</a>(XMP_StringPtr schemaNS, XMP_StringPtr altTextName, XMP_StringPtr genericLang, XMP_StringPtr specificLang, XMP_StringPtr itemValue, XMP_OptionBits options=0)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#81273a152fb7b19e99c62ee39bf723f2">SetLocalizedText</a>(XMP_StringPtr schemaNS, XMP_StringPtr altTextName, XMP_StringPtr genericLang, XMP_StringPtr specificLang, const tStringObj &amp;itemValue, XMP_OptionBits options=0)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#cf1935be8e4849976dfc02325424960a">SetObjectName</a>(XMP_StringPtr name)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#fd059cc7cd9f906e12dab04e380e495c">SetObjectName</a>(tStringObj name)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#92055b3ae18dfd5e5491108f59318f17">SetObjectOptions</a>(XMP_OptionBits options)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#1dfd6a08ebfd1a6364b3a7b6584bcc28">SetProperty</a>(XMP_StringPtr schemaNS, XMP_StringPtr propName, XMP_StringPtr propValue, XMP_OptionBits options=0)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#cc50625611f6aad405aa47197b6d0055">SetProperty</a>(XMP_StringPtr schemaNS, XMP_StringPtr propName, const tStringObj &amp;propValue, XMP_OptionBits options=0)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#9521e3838272ec501ffdb60ff3eb482f">SetProperty_Bool</a>(XMP_StringPtr schemaNS, XMP_StringPtr propName, bool propValue, XMP_OptionBits options=0)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#eee10669445f77139d5634199ff01079">SetProperty_Date</a>(XMP_StringPtr schemaNS, XMP_StringPtr propName, const XMP_DateTime &amp;propValue, XMP_OptionBits options=0)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#3b0f2f6bae57931ea96775f03608c0ed">SetProperty_Float</a>(XMP_StringPtr schemaNS, XMP_StringPtr propName, double propValue, XMP_OptionBits options=0)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#b8ae94130d9a05c1b9a3ee25588b6421">SetProperty_Int</a>(XMP_StringPtr schemaNS, XMP_StringPtr propName, long propValue, XMP_OptionBits options=0)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#df919aff205e934e4c8250a067f7b377">SetProperty_Int64</a>(XMP_StringPtr schemaNS, XMP_StringPtr propName, long long propValue, XMP_OptionBits options=0)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#c2e798da5f9d94e486382a41e73fcea3">SetQualifier</a>(XMP_StringPtr schemaNS, XMP_StringPtr propName, XMP_StringPtr qualNS, XMP_StringPtr qualName, XMP_StringPtr qualValue, XMP_OptionBits options=0)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#c395e094cab251a0593d508594b21521">SetQualifier</a>(XMP_StringPtr schemaNS, XMP_StringPtr propName, XMP_StringPtr qualNS, XMP_StringPtr qualName, const tStringObj &amp;qualValue, XMP_OptionBits options=0)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#0e44c30e7527064909e5f7035d53c4f5">SetStructField</a>(XMP_StringPtr schemaNS, XMP_StringPtr structName, XMP_StringPtr fieldNS, XMP_StringPtr fieldName, XMP_StringPtr fieldValue, XMP_OptionBits options=0)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#77d4a1bf7831f39073af9ea1544ebefa">SetStructField</a>(XMP_StringPtr schemaNS, XMP_StringPtr structName, XMP_StringPtr fieldNS, XMP_StringPtr fieldName, const tStringObj &amp;fieldValue, XMP_OptionBits options=0)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#6c30fae26173167958b6f0da95a53865">Terminate</a>()</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td><code> [static]</code></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#7729cbce91956632289b88d85fdc65ae">TXMPMeta</a>()</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#21a4d06fc2e77b28991bb900f0f48e50">TXMPMeta</a>(const TXMPMeta&lt; tStringObj &gt; &amp;original)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#cbe8f556a5b32542c44fa9de9648ad41">TXMPMeta</a>(XMPMetaRef xmpRef)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#05199e2a4bc61db7aed207759e899bc2">TXMPMeta</a>(XMP_StringPtr buffer, XMP_StringLen xmpSize)</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td></td></tr>
+ <tr class="memlist"><td><a class="el" href="classTXMPMeta.html#bab5013870cd47eb0d9d701653735a02">~TXMPMeta</a>()</td><td><a class="el" href="classTXMPMeta.html">TXMPMeta&lt; tStringObj &gt;</a></td><td><code> [virtual]</code></td></tr>
+</table><hr size="1"><address style="align: right;"><small>Generated on Thu May 3 14:54:59 2007 for Adobe XMP Toolkit by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.1 </small></address>
+</body>
+</html>
diff --git a/docs/XMPToolkit/classTXMPMeta.html b/docs/XMPToolkit/classTXMPMeta.html
new file mode 100644
index 0000000..3207227
--- /dev/null
+++ b/docs/XMPToolkit/classTXMPMeta.html
@@ -0,0 +1,2781 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>Adobe XMP Toolkit: TXMPMeta&lt; tStringObj &gt; Class Template Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.5.1 -->
+<div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li id="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul></div>
+<div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul></div>
+<h1>TXMPMeta&lt; tStringObj &gt; Class Template Reference</h1><!-- doxytag: class="TXMPMeta" -->Template class for the XMP Toolkit core services.
+<a href="#_details">More...</a>
+<p>
+<code>#include &lt;<a class="el" href="TXMPMeta_8hpp-source.html">TXMPMeta.hpp</a>&gt;</code>
+<p>
+<a href="classTXMPMeta-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+<tr><td colspan="2"><br><h2>Constructors and destructor</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#7729cbce91956632289b88d85fdc65ae">TXMPMeta</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Default constructor, creates an empty object. <a href="#7729cbce91956632289b88d85fdc65ae"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#21a4d06fc2e77b28991bb900f0f48e50">TXMPMeta</a> (const <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt; &amp;original)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Copy constructor, creates a client object refering to the same internal object. <a href="#21a4d06fc2e77b28991bb900f0f48e50"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#4d5a601c9b77f6f6ab5f14e658de58ef">operator=</a> (const <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt; &amp;rhs)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Assignment operator, assigns the internal ref and increments the ref count. <a href="#4d5a601c9b77f6f6ab5f14e658de58ef"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#cbe8f556a5b32542c44fa9de9648ad41">TXMPMeta</a> (<a class="el" href="XMP__Const_8h.html#5912613564f80e17eb10acef9236f70a">XMPMetaRef</a> xmpRef)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Reconstruct an XMP object from an internal ref. <a href="#cbe8f556a5b32542c44fa9de9648ad41"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#05199e2a4bc61db7aed207759e899bc2">TXMPMeta</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> buffer, <a class="el" href="XMP__Const_8h.html#9f7dcc184f901c713274edfdac5bcc9a">XMP_StringLen</a> xmpSize)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct an object and parse one buffer of RDF into it. <a href="#05199e2a4bc61db7aed207759e899bc2"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="bab5013870cd47eb0d9d701653735a02"></a><!-- doxytag: member="TXMPMeta::~TXMPMeta" ref="bab5013870cd47eb0d9d701653735a02" args="()" -->
+virtual&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#bab5013870cd47eb0d9d701653735a02">~TXMPMeta</a> () throw ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destructor, typical virtual destructor. <br></td></tr>
+<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Functions for getting property values</div></td></tr>
+<tr><td colspan="2"><div class="groupText">The property value "getters" all take a property specification, The first two parameters are always the top level namespace URI (the "schema" namespace) and the basic name of the property being referenced. See the introductory discussion of path expression usage for more information.<p>
+All of the functions return a Boolean result telling if the property exists, and if it does they also return option flags describing the property. If the property exists and has a value, the string value is also returned. The string is Unicode in UTF-8 encoding. Arrays and the non-leaf levels of structs do not have values. The possible option flags that describe properties are:<p>
+<ul>
+<li><code>kXMP_PropValueIsURI</code> - The property value is a URI. It is serialized to RDF using the <code>rdf:resource</code> attribute. Not mandatory for URIs, but considered RDF-savvy.</li>
+</ul>
+<ul>
+<li><code>kXMP_PropHasQualifiers</code> - The property has qualifiers. These could be an <code>xml:lang</code> attribute, an <code>rdf:type</code> property, or a general qualifier. See the introductory discussion of qualified properties for more information.</li>
+</ul>
+<ul>
+<li><code>kXMP_PropIsQualifier</code> - This property is a qualifier for some other property. Note that if the qualifier itself has a structured value, this flag is only set for the top node of the qualifier's subtree. Qualifiers may have arbitrary structure, and may even have qualifiers.</li>
+</ul>
+<ul>
+<li><code>kXMP_PropHasLang</code> - This property has an <code>xml:lang</code> qualifier.</li>
+</ul>
+<ul>
+<li><code>kXMP_PropHasType</code> - This property has an <code>rdf:type</code> qualifier.</li>
+</ul>
+<ul>
+<li><code>kXMP_PropValueIsStruct</code> - This property contains nested fields (models a C struct).</li>
+</ul>
+<ul>
+<li><code>kXMP_PropValueIsArray</code> - This property is an array. By itself (no ...ArrayIs... flags), this indicates a general unordered array. It is serialized using an <code>rdf:Bag</code> container.</li>
+</ul>
+<ul>
+<li><code>kXMP_PropArrayIsOrdered</code> - This property is an ordered array. Appears in conjunction with <code>kXMP_PropValueIsArray</code>. It is serialized using an <code>rdf:Seq</code> container.</li>
+</ul>
+<ul>
+<li><code>kXMP_PropArrayIsAlternate</code> - This property is an alternative array. Appears in conjunction with <code>kXMP_PropValueIsArray</code>. It is serialized using an <code>rdf:Alt</code> container.</li>
+</ul>
+<ul>
+<li><code>kXMP_PropArrayIsAltText</code> - This property is an alt-text array. Appears in conjunction with <code>kXMP_PropArrayIsAlternate</code>. It is serialized using an <code>rdf:Alt</code> container. Each array element is a simple property with an <code>xml:lang</code> attribute.</li>
+</ul>
+<ul>
+<li><code>kXMP_PropIsAlias</code> - The given property name is an alias. This is only returned by <code>GetProperty</code> and then only if the property name is simple, not an path expression.</li>
+</ul>
+<ul>
+<li><code>kXMP_PropHasAliases</code> - The given property name has aliases. This is only returned by <code>GetProperty</code> and then only if the property name is simple, not an path expression.</li>
+</ul>
+<ul>
+<li><code>kXMP_PropIsStable</code> - The value of this property is not related to the document content.</li>
+</ul>
+<ul>
+<li><code>kXMP_PropIsDerived</code> - The value of this property is derived from the document content.</li>
+</ul>
+<ul>
+<li><code>kXMP_PropIsInternal</code> - The value of this property is "owned" by the application, it should not generally be editable in a UI. </li>
+</ul>
+<br><br></div></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#06a3241c7fa5df87f61dff02fca23a0c">GetProperty</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName, tStringObj *propValue, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> *options) const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>GetProperty</code> is the simplest property getter, mainly for top level simple properties or after using the path composition functions in <code><a class="el" href="classTXMPUtils.html">TXMPUtils</a></code>. <a href="#06a3241c7fa5df87f61dff02fca23a0c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#c64a4251d157937f69b73f2ffac4f7cc">GetArrayItem</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> arrayName, <a class="el" href="XMP__Const_8h.html#00e9d9a76c144421105a4c2742203315">XMP_Index</a> itemIndex, tStringObj *itemValue, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> *options) const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>GetArrayItem</code> provides access to items within an array. The index is passed as an integer, you need not worry about the path string syntax for array items, convert a loop index to a string, etc. <a href="#c64a4251d157937f69b73f2ffac4f7cc"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#e99d2bc414d5cd68851147aef6710d4a">GetStructField</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> structName, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldName, tStringObj *fieldValue, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> *options) const</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>GetStructField</code> provides access to fields within a nested structure. The namespace for the field is passed as a URI, you need not worry about the path string syntax. <a href="#e99d2bc414d5cd68851147aef6710d4a"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#2cc58d8316043b035643e7c21633bc13">GetQualifier</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> qualNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> qualName, tStringObj *qualValue, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> *options) const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>GetQualifier</code> provides access to a qualifier attached to a property. The namespace for the qualifier is passed as a URI, you need not worry about the path string syntax. In many regards qualifiers are like struct fields. See the introductory discussion of qualified properties for more information. <a href="#2cc58d8316043b035643e7c21633bc13"></a><br></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Functions for setting property values</div></td></tr>
+<tr><td colspan="2"><div class="groupText">The property value "setters" all take a property specification, their differences are in the form of this. The first two parameters are always the top level namespace URI (the "schema" namespace) and the basic name of the property being referenced. See the introductory discussion of path expression usage for more information.<p>
+All of the functions take a string value for the property and option flags describing the property. The value must be Unicode in UTF-8 encoding. Arrays and non-leaf levels of structs do not have values. Empty arrays and structs may be created using appropriate option flags. All levels of structs that is assigned implicitly are created if necessary. <code>AppendArayItem</code> implicitly creates the named array if necessary.<p>
+The canonical form of these functions take the value as an <code>XMP_StringPtr</code>, a pointer to a null terminated string. (<code>XMP_StringPtr</code> is a typedef for <code>const char *</code>.) They also have overloaded forms that take a string object. These are implemented in the template instantiation as a call to the canonical form, using <code>value.c_str()</code> to obtain the <code>XMP_StringPtr</code>.<p>
+The possible option flags are:<p>
+<ul>
+<li><code>kXMP_PropValueIsURI</code> - The property value is a URI. It is serialized to RDF using the <code>rdf:resource</code> attribute. Not mandatory for URIs, but considered RDF-savvy.</li>
+</ul>
+<ul>
+<li><code>kXMP_PropValueIsStruct</code> - This property contains nested fields (models a C struct). Not necessary, may be used to create an empty struct. A struct is implicitly created when first field is set.</li>
+</ul>
+<ul>
+<li><code>kXMP_PropValueIsArray</code> - This property is an array. By itself (no ...ArrayIs... flags), this indicates a general unordered array. It is serialized using an <code>rdf:Bag</code> container.</li>
+</ul>
+<ul>
+<li><code>kXMP_PropArrayIsOrdered</code> - This property is an ordered array. Implies <code>kXMP_PropValueIsArray</code>, may be used together. It is serialized using an <code>rdf:Seq</code> container.</li>
+</ul>
+<ul>
+<li><code>kXMP_PropArrayIsAlternate</code> - This property is an alternative array. Implies <code>kXMP_PropArrayIsOrdered</code>, may be used together. It is serialized using an <code>rdf:Alt</code> container.</li>
+</ul>
+<ul>
+<li><code>kXMP_PropArrayIsAltText</code> - This property is an alt-text array. Implies <code>kXMP_PropArrayIsAlternate</code>, may be used together. It is serialized using an <code>rdf:Alt</code> container. Each array element must be a simple property with an <code>xml:lang</code> attribute. </li>
+</ul>
+<br><br></div></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#1dfd6a08ebfd1a6364b3a7b6584bcc28">SetProperty</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propValue, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>SetProperty</code> is the simplest property setter, mainly for top level simple properties or after using the path composition functions in <code><a class="el" href="classTXMPUtils.html">TXMPUtils</a></code>. <a href="#1dfd6a08ebfd1a6364b3a7b6584bcc28"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="cc50625611f6aad405aa47197b6d0055"></a><!-- doxytag: member="TXMPMeta::SetProperty" ref="cc50625611f6aad405aa47197b6d0055" args="(XMP_StringPtr schemaNS, XMP_StringPtr propName, const tStringObj &amp;propValue, XMP_OptionBits options=0)" -->
+void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#cc50625611f6aad405aa47197b6d0055">SetProperty</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName, const tStringObj &amp;propValue, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This form of <code>SetProperty</code> is a simple overload in the template that calls the above form passing <code>propValue.c_str()</code>. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#1570eb89d613b4a94ca572e4644168cc">SetArrayItem</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> arrayName, <a class="el" href="XMP__Const_8h.html#00e9d9a76c144421105a4c2742203315">XMP_Index</a> itemIndex, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> itemValue, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>SetArrayItem</code> provides access to items within an array. The index is passed as an integer, you need not worry about the path string syntax for array items, convert a loop index to a string, etc. The array passed to <code>SetArrayItem</code> must already exist. See also <code>AppendArrayItem</code>. <a href="#1570eb89d613b4a94ca572e4644168cc"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="15720ee8e732232fa25989870cf99846"></a><!-- doxytag: member="TXMPMeta::SetArrayItem" ref="15720ee8e732232fa25989870cf99846" args="(XMP_StringPtr schemaNS, XMP_StringPtr arrayName, XMP_Index itemIndex, const tStringObj &amp;itemValue, XMP_OptionBits options=0)" -->
+void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#15720ee8e732232fa25989870cf99846">SetArrayItem</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> arrayName, <a class="el" href="XMP__Const_8h.html#00e9d9a76c144421105a4c2742203315">XMP_Index</a> itemIndex, const tStringObj &amp;itemValue, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This form of <code>SetArrayItem</code> is a simple overload in the template that calls the above form passing <code>itemValue.c_str()</code>. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#00d7314dc970ad390499ce9db27d314a">AppendArrayItem</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> arrayName, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> arrayOptions, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> itemValue, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> itemOptions=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>AppendArrayItem</code> simplifies construction of an array by not requiring that you pre-create an empty array. The array that is assigned is created automatically if it does not yet exist. Each call to <code>AppendArrayItem</code> appends an item to the array. The corresponding parameters have the same use as <code>SetArrayItem</code>. The <code>arrayOptions</code> parameter is used to specify what kind of array. If the array exists, it must have the specified form. <a href="#00d7314dc970ad390499ce9db27d314a"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4f768a8cb35cabff1cf4187aa6a88dd3"></a><!-- doxytag: member="TXMPMeta::AppendArrayItem" ref="4f768a8cb35cabff1cf4187aa6a88dd3" args="(XMP_StringPtr schemaNS, XMP_StringPtr arrayName, XMP_OptionBits arrayOptions, const tStringObj &amp;itemValue, XMP_OptionBits itemOptions=0)" -->
+void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#4f768a8cb35cabff1cf4187aa6a88dd3">AppendArrayItem</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> arrayName, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> arrayOptions, const tStringObj &amp;itemValue, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> itemOptions=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This form of <code>AppendArrayItem</code> is a simple overload in the template that calls the above form passing <code>itemValue.c_str()</code>. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#0e44c30e7527064909e5f7035d53c4f5">SetStructField</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> structName, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldName, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldValue, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>SetStructField</code> provides access to fields within a nested structure. The namespace for the field is passed as a URI, you need not worry about the path string syntax. <a href="#0e44c30e7527064909e5f7035d53c4f5"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="77d4a1bf7831f39073af9ea1544ebefa"></a><!-- doxytag: member="TXMPMeta::SetStructField" ref="77d4a1bf7831f39073af9ea1544ebefa" args="(XMP_StringPtr schemaNS, XMP_StringPtr structName, XMP_StringPtr fieldNS, XMP_StringPtr fieldName, const tStringObj &amp;fieldValue, XMP_OptionBits options=0)" -->
+void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#77d4a1bf7831f39073af9ea1544ebefa">SetStructField</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> structName, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldName, const tStringObj &amp;fieldValue, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This form of <code>SetStructField</code> is a simple overload in the template that calls the above form passing <code>fieldValue.c_str()</code>. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#c2e798da5f9d94e486382a41e73fcea3">SetQualifier</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> qualNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> qualName, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> qualValue, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>SetQualifier</code> provides access to a qualifier attached to a property. The namespace for the qualifier is passed as a URI, you need not worry about the path string syntax. In many regards qualifiers are like struct fields. See the introductory discussion of qualified properties for more information. <a href="#c2e798da5f9d94e486382a41e73fcea3"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c395e094cab251a0593d508594b21521"></a><!-- doxytag: member="TXMPMeta::SetQualifier" ref="c395e094cab251a0593d508594b21521" args="(XMP_StringPtr schemaNS, XMP_StringPtr propName, XMP_StringPtr qualNS, XMP_StringPtr qualName, const tStringObj &amp;qualValue, XMP_OptionBits options=0)" -->
+void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#c395e094cab251a0593d508594b21521">SetQualifier</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> qualNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> qualName, const tStringObj &amp;qualValue, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This form of <code>SetQualifier</code> is a simple overload in the template that calls the above form passing <code>qualValue.c_str()</code>. <br></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Functions for deleting and detecting properties.</div></td></tr>
+<tr><td colspan="2"><div class="groupText">These should be obvious from the descriptions of the getters and setters. <br><br></div></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#c8b555ba99904fa49bb4851a60cc3844">DeleteProperty</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>DeleteProperty</code> deletes the given XMP subtree rooted at the given property. It is not an error if the property does not exist. <a href="#c8b555ba99904fa49bb4851a60cc3844"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#bc1211f47225b5973a170ff952743264">DeleteArrayItem</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> arrayName, <a class="el" href="XMP__Const_8h.html#00e9d9a76c144421105a4c2742203315">XMP_Index</a> itemIndex)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>DeleteArrayItem</code> deletes the given XMP subtree rooted at the given array item. It is not an error if the array item does not exist. <a href="#bc1211f47225b5973a170ff952743264"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#bc258e027780a15be65a88fcfd4e1fd4">DeleteStructField</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> structName, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldName)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>DeleteStructField</code> deletes the given XMP subtree rooted at the given struct field. It is not an error if the field does not exist. <a href="#bc258e027780a15be65a88fcfd4e1fd4"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#8ce15f7de7fd3b258f07158ab5fa88be">DeleteQualifier</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> qualNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> qualName)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>DeleteQualifier</code> deletes the given XMP subtree rooted at the given qualifier. It is not an error if the qualifier does not exist. <a href="#8ce15f7de7fd3b258f07158ab5fa88be"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#f22b116d71ecbbebea016ec5337e7066">DoesPropertyExist</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName) const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>DoesPropertyExist</code> tells if the property exists. <a href="#f22b116d71ecbbebea016ec5337e7066"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#492465c588d6d4cb8e30f94790e66f58">DoesArrayItemExist</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> arrayName, <a class="el" href="XMP__Const_8h.html#00e9d9a76c144421105a4c2742203315">XMP_Index</a> itemIndex) const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>DoesArrayItemExist</code> tells if the array item exists. <a href="#492465c588d6d4cb8e30f94790e66f58"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#9261b80d62e77a10ff1a89843bfa10a5">DoesStructFieldExist</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> structName, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> fieldName) const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>DoesStructFieldExist</code> tells if the struct field exists. <a href="#9261b80d62e77a10ff1a89843bfa10a5"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#81347a92becd387a14f4d47c582f129a">DoesQualifierExist</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> qualNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> qualName) const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>DoesQualifierExist</code> tells if the qualifier exists. <a href="#81347a92becd387a14f4d47c582f129a"></a><br></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Functions for accessing localized text (alt-text) properties.</div></td></tr>
+<tr><td colspan="2"><div class="groupText">These functions provide convenient support for localized text properties, including a number of special and obscure aspects. Localized text properties are stored in alt-text arrays. They allow multiple concurrent localizations of a property value, for example a document title or copyright in several languages.<p>
+The most important aspect of these functions is that they select an appropriate array item based on one or two RFC 3066 language tags. One of these languages, the "specific" language, is preferred and selected if there is an exact match. For many languages it is also possible to define a "generic" language that may be used if there is no specific language match. The generic language must be a valid RFC 3066 primary subtag, or the empty string.<p>
+For example, a specific language of "en-US" should be used in the US, and a specific language of "en-UK" should be used in England. It is also appropriate to use "en" as the generic language in each case. If a US document goes to England, the "en-US" title is selected by using the "en" generic language and the "en-UK" specific language.<p>
+It is considered poor practice, but allowed, to pass a specific language that is just an RFC 3066 primary tag. For example "en" is not a good specific language, it should only be used as a generic language. Passing "i" or "x" as the generic language is also considered poor practice but allowed.<p>
+Advice from the W3C about the use of RFC 3066 language tags can be found at: <ul>
+<li><a href="http://www.w3.org/International/articles/language-tags/">http://www.w3.org/International/articles/language-tags/</a></li>
+</ul>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>RFC 3066 language tags must be treated in a case insensitive manner. The XMP toolkit does this by normalizing their capitalization:</dd></dl>
+<ul>
+<li>The primary subtag is lower case, the suggested practice of ISO 639. </li>
+<li>All 2 letter secondary subtags are upper case, the suggested practice of ISO 3166. </li>
+<li>All other subtags are lower case.</li>
+</ul>
+The XMP specification defines an artificial language, "x-default", that is used to explicitly denote a default item in an alt-text array. The XMP toolkit normalizes alt-text arrays such that the x-default item is the first item. The <code>SetLocalizedText</code> function has several special features related to the x-default item, see its description for details.<p>
+The selection of the array item is the same for <code>GetLocalizedText</code> and <code>SetLocalizedText:</code> <p>
+<ul>
+<li>Look for an exact match with the specific language. </li>
+<li>If a generic language is given, look for a partial match. </li>
+<li>Look for an x-default item. </li>
+<li>Choose the first item.</li>
+</ul>
+A partial match with the generic language is where the start of the item's language matches the generic string and the next character is '-'. An exact match is also recognized as a degenerate case.<p>
+It is fine to pass x-default as the specific language. In this case, selection of an x-default item is an exact match by the first rule, not a selection by the 3rd rule. The last 2 rules are fallbacks used when the specific and generic languages fail to produce a match. <br><br></div></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#eefe49bbf669770d769f4fe0ea566bd0">GetLocalizedText</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> altTextName, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> genericLang, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> specificLang, tStringObj *actualLang, tStringObj *itemValue, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> *options) const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>GetLocalizedText</code> returns information about a selected item in an alt-text array. The array item is selected according to the rules given above. <a href="#eefe49bbf669770d769f4fe0ea566bd0"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#f9531b949a462f5663b1f3fd99464c19">SetLocalizedText</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> altTextName, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> genericLang, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> specificLang, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> itemValue, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>SetLocalizedText</code> modifies the value of a selected item in an alt-text array. Creates an appropriate array item if necessary, and handles special cases for the x-default item. <a href="#f9531b949a462f5663b1f3fd99464c19"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="81273a152fb7b19e99c62ee39bf723f2"></a><!-- doxytag: member="TXMPMeta::SetLocalizedText" ref="81273a152fb7b19e99c62ee39bf723f2" args="(XMP_StringPtr schemaNS, XMP_StringPtr altTextName, XMP_StringPtr genericLang, XMP_StringPtr specificLang, const tStringObj &amp;itemValue, XMP_OptionBits options=0)" -->
+void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#81273a152fb7b19e99c62ee39bf723f2">SetLocalizedText</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> altTextName, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> genericLang, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> specificLang, const tStringObj &amp;itemValue, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This form of <code>SetLocalizedText</code> is a simple overload in the template that calls the above form passing <code>itemValue.c_str()</code>. <br></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Functions accessing properties as binary values.</div></td></tr>
+<tr><td colspan="2"><div class="groupText">These are very similar to <code>GetProperty</code> and <code>SetProperty</code> above, but the value is returned or provided in binary form instead of as a UTF-8 string. The path composition functions in <code><a class="el" href="classTXMPUtils.html">TXMPUtils</a></code> may be used to compose an path expression for fields in nested structures, items in arrays, or qualifiers. <br><br></div></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#dcf8a1959a8bd42641a42cbd4d64a5b7">GetProperty_Bool</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName, bool *propValue, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> *options) const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>GetProperty_Bool</code> returns the value of a Boolean property as a C++ bool. <a href="#dcf8a1959a8bd42641a42cbd4d64a5b7"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#3b6ba486c02607b544917091c43b05cc">GetProperty_Int</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName, long *propValue, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> *options) const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>GetProperty_Int</code> returns the value of an integer property as a C long integer. <a href="#3b6ba486c02607b544917091c43b05cc"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#d1a6629b0466981b67d31c9dc3840ea7">GetProperty_Int64</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName, long long *propValue, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> *options) const</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>GetProperty_Int64</code> returns the value of an integer property as a C long long integer. <a href="#d1a6629b0466981b67d31c9dc3840ea7"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#7708c31c9af3e740b27a4893dcd9aa47">GetProperty_Float</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName, double *propValue, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> *options) const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>GetProperty_Float</code> returns the value of a flaoting point property as a C double float. <a href="#7708c31c9af3e740b27a4893dcd9aa47"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#2f561295e73047ee90765558d29bd650">GetProperty_Date</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName, <a class="el" href="structXMP__DateTime.html">XMP_DateTime</a> *propValue, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> *options) const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>GetProperty_Date</code> returns the value of a date/time property as an <code><a class="el" href="structXMP__DateTime.html">XMP_DateTime</a></code> struct. <a href="#2f561295e73047ee90765558d29bd650"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#9521e3838272ec501ffdb60ff3eb482f">SetProperty_Bool</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName, bool propValue, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>SetProperty_Bool</code> sets the value of a Boolean property from a C++ bool. <a href="#9521e3838272ec501ffdb60ff3eb482f"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#b8ae94130d9a05c1b9a3ee25588b6421">SetProperty_Int</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName, long propValue, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>SetProperty_Int</code> sets the value of an integer property from a C long integer. <a href="#b8ae94130d9a05c1b9a3ee25588b6421"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#df919aff205e934e4c8250a067f7b377">SetProperty_Int64</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName, long long propValue, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>SetProperty_Int64</code> sets the value of an integer property from a C long long integer. <a href="#df919aff205e934e4c8250a067f7b377"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#3b0f2f6bae57931ea96775f03608c0ed">SetProperty_Float</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName, double propValue, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>SetProperty_Float</code> sets the value of a floating point property from a C double float. <a href="#3b0f2f6bae57931ea96775f03608c0ed"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#eee10669445f77139d5634199ff01079">SetProperty_Date</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> propName, const <a class="el" href="structXMP__DateTime.html">XMP_DateTime</a> &amp;propValue, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>SetProperty_Date</code> sets the value of a date/time property from an <code><a class="el" href="structXMP__DateTime.html">XMP_DateTime</a></code> struct. <a href="#eee10669445f77139d5634199ff01079"></a><br></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Misceallaneous functions.</div></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4d35b44f1f017a27772ee902a3dacf04"></a><!-- doxytag: member="TXMPMeta::GetInternalRef" ref="4d35b44f1f017a27772ee902a3dacf04" args="() const" -->
+<a class="el" href="XMP__Const_8h.html#5912613564f80e17eb10acef9236f70a">XMPMetaRef</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#4d35b44f1f017a27772ee902a3dacf04">GetInternalRef</a> () const</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">GetInternalRef Returns an internal reference that may be safely passed across DLL boundaries and reconstructed. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b0d179ed95487d4fd4f2680c1fbe0d40"></a><!-- doxytag: member="TXMPMeta::GetObjectName" ref="b0d179ed95487d4fd4f2680c1fbe0d40" args="(tStringObj *name) const " -->
+void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#b0d179ed95487d4fd4f2680c1fbe0d40">GetObjectName</a> (tStringObj *name) const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">GetObjectName --TBD--. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="cf1935be8e4849976dfc02325424960a"></a><!-- doxytag: member="TXMPMeta::SetObjectName" ref="cf1935be8e4849976dfc02325424960a" args="(XMP_StringPtr name)" -->
+void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#cf1935be8e4849976dfc02325424960a">SetObjectName</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> name)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">SetObjectName --TBD--. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="fd059cc7cd9f906e12dab04e380e495c"></a><!-- doxytag: member="TXMPMeta::SetObjectName" ref="fd059cc7cd9f906e12dab04e380e495c" args="(tStringObj name)" -->
+void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#fd059cc7cd9f906e12dab04e380e495c">SetObjectName</a> (tStringObj name)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">SetObjectName --TBD--. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="39aeaf9eb83cfc1c5455807b95f055f9"></a><!-- doxytag: member="TXMPMeta::GetObjectOptions" ref="39aeaf9eb83cfc1c5455807b95f055f9" args="() const" -->
+<a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#39aeaf9eb83cfc1c5455807b95f055f9">GetObjectOptions</a> () const</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">GetObjectOptions --TBD--. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#92055b3ae18dfd5e5491108f59318f17">SetObjectOptions</a> (<a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">SetObjectOptions --TBD--. <a href="#92055b3ae18dfd5e5491108f59318f17"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classTXMPMeta.html">TXMPMeta</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#6ca653436995bbb76315efe7934afd4c">Clone</a> (<a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options=0) const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>Clone</code> creates a deep clone of the XMP object. <a href="#6ca653436995bbb76315efe7934afd4c"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b79aae864b3ce190d0699252f48e0acc"></a><!-- doxytag: member="TXMPMeta::CountArrayItems" ref="b79aae864b3ce190d0699252f48e0acc" args="(XMP_StringPtr schemaNS, XMP_StringPtr arrayName) const " -->
+<a class="el" href="XMP__Const_8h.html#00e9d9a76c144421105a4c2742203315">XMP_Index</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#b79aae864b3ce190d0699252f48e0acc">CountArrayItems</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> arrayName) const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">CountArrayItems --TBD--. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="976c1eb889f44080f76628805712b618"></a><!-- doxytag: member="TXMPMeta::DumpObject" ref="976c1eb889f44080f76628805712b618" args="(XMP_TextOutputProc outProc, void *refCon) const " -->
+<a class="el" href="XMP__Const_8h.html#91efdc0a7fbe6e1d42ca34e6ce589b98">XMP_Status</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#976c1eb889f44080f76628805712b618">DumpObject</a> (<a class="el" href="XMP__Const_8h.html#36eab570ab85ff8fb5789661692d13c2">XMP_TextOutputProc</a> outProc, void *refCon) const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>DumpObject</code> dumps the content of an XMP object. <br></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Functions for parsing and serializing.</div></td></tr>
+<tr><td colspan="2"><div class="groupText">These functions support parsing serialized RDF into an XMP object, and serailizing an XMP object into RDF. The input for parsing may be any valid Unicode encoding. ISO Latin-1 is also recognized, but its use is strongly discouraged. Serialization is always as UTF-8. <br><br></div></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#7b383f5b357fff040cdbde82f4f43f26">ParseFromBuffer</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> buffer, <a class="el" href="XMP__Const_8h.html#9f7dcc184f901c713274edfdac5bcc9a">XMP_StringLen</a> bufferSize, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options=0)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>ParseFromBuffer</code> parses RDF from a series of input buffers. The buffers may be any length. The buffer boundaries need not respect XML tokens or even Unicode characters. <a href="#7b383f5b357fff040cdbde82f4f43f26"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#2774a6f15ae22f0002201b58c46bfb49">SerializeToBuffer</a> (tStringObj *rdfString, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options, <a class="el" href="XMP__Const_8h.html#9f7dcc184f901c713274edfdac5bcc9a">XMP_StringLen</a> padding, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> newline, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> indent=&quot;&quot;, <a class="el" href="XMP__Const_8h.html#00e9d9a76c144421105a4c2742203315">XMP_Index</a> baseIndent=0) const </td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>SerializeToBuffer</code> serializes an XMP object into a string as RDF. <a href="#2774a6f15ae22f0002201b58c46bfb49"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="34143727d979b47a2f2209367aec9a1c"></a><!-- doxytag: member="TXMPMeta::SerializeToBuffer" ref="34143727d979b47a2f2209367aec9a1c" args="(tStringObj *rdfString, XMP_OptionBits options=0, XMP_StringLen padding=0) const" -->
+void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#34143727d979b47a2f2209367aec9a1c">SerializeToBuffer</a> (tStringObj *rdfString, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options=0, <a class="el" href="XMP__Const_8h.html#9f7dcc184f901c713274edfdac5bcc9a">XMP_StringLen</a> padding=0) const</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This form of <code>SerializeToBuffer</code> is a simple overload in the template that calls the above form passing default values for the <code>newline</code>, <code>indent</code>, and <code>baseIndent</code> parameters. <br></td></tr>
+<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Initialization and termination</div></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5415cfc01a9cb8786939246571a23a9d"></a><!-- doxytag: member="TXMPMeta::GetVersionInfo" ref="5415cfc01a9cb8786939246571a23a9d" args="(XMP_VersionInfo *info)" -->
+static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#5415cfc01a9cb8786939246571a23a9d">GetVersionInfo</a> (XMP_VersionInfo *info)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Obtain version information. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#bfddf1df0e01ab33d5636a80edc973ca">Initialize</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize the XMP Toolkit. <a href="#bfddf1df0e01ab33d5636a80edc973ca"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6c30fae26173167958b6f0da95a53865"></a><!-- doxytag: member="TXMPMeta::Terminate" ref="6c30fae26173167958b6f0da95a53865" args="()" -->
+static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#6c30fae26173167958b6f0da95a53865">Terminate</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Terminate the XMP Toolkit. <br></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Global option flags</div></td></tr>
+<tr><td colspan="2"><div class="groupText">The global option flags affect the overall behavior of the XMP Toolkit. The available options are declared in <code><a class="el" href="XMP__Const_8h.html">XMP_Const.h</a></code>. <b>(There are none at present.)</b> <br><br></div></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="12b2435ba039c62a164951948c016eb4"></a><!-- doxytag: member="TXMPMeta::GetGlobalOptions" ref="12b2435ba039c62a164951948c016eb4" args="()" -->
+static <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#12b2435ba039c62a164951948c016eb4">GetGlobalOptions</a> ()</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">GetGlobalOptions returns the set of global option flags. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#e7bb38d9b3857b08106630a386b47332">SetGlobalOptions</a> (<a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> options)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>SetGlobalOptions</code> updates the set of global option flags. The entire set is replaced with the new values. If only one flag is to be modified, use <code>GetGlobalOptions</code> to obtain the current set, modify the desired flag, then use <code>SetGlobalOptions</code>. <a href="#e7bb38d9b3857b08106630a386b47332"></a><br></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Internal data structure dump utilities</div></td></tr>
+<tr><td colspan="2"><div class="groupText">These are debugging utilities that dump internal data structures. The output callback is described in <code><a class="el" href="XMP__Const_8h.html">XMP_Const.h</a></code>. <br><br></div></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="44250140a710c0b7c5cc0881e387d004"></a><!-- doxytag: member="TXMPMeta::DumpNamespaces" ref="44250140a710c0b7c5cc0881e387d004" args="(XMP_TextOutputProc outProc, void *refCon)" -->
+static <a class="el" href="XMP__Const_8h.html#91efdc0a7fbe6e1d42ca34e6ce589b98">XMP_Status</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#44250140a710c0b7c5cc0881e387d004">DumpNamespaces</a> (<a class="el" href="XMP__Const_8h.html#36eab570ab85ff8fb5789661692d13c2">XMP_TextOutputProc</a> outProc, void *refCon)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>DumpNamespaces</code> dumps the list of registered namespace URIs and prefixes. <br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="afb027f200b85467298d237a0c23949b"></a><!-- doxytag: member="TXMPMeta::DumpAliases" ref="afb027f200b85467298d237a0c23949b" args="(XMP_TextOutputProc outProc, void *refCon)" -->
+static <a class="el" href="XMP__Const_8h.html#91efdc0a7fbe6e1d42ca34e6ce589b98">XMP_Status</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#afb027f200b85467298d237a0c23949b">DumpAliases</a> (<a class="el" href="XMP__Const_8h.html#36eab570ab85ff8fb5789661692d13c2">XMP_TextOutputProc</a> outProc, void *refCon)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><code>DumpAliases</code> dumps the list of registered aliases and corresponding actuals. <br></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Namespace Functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText">Namespaces must be registered before use in namespace URI parameters or path expressions. Within the XMP Toolkit the registered namespace URIs and prefixes must be unique. Additional namespaces encountered when parsing RDF are automatically registered.<p>
+The namespace URI should always end in an XML name separator such as '/' or '#'. This is because some forms of RDF shorthand catenate a namespace URI with an element name to form a new URI. <br><br></div></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#4c69d31a37ff24c85679229c479aa1ac">RegisterNamespace</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> namespaceURI, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> suggestedPrefix, tStringObj *registeredPrefix)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Register a namespace URI with a suggested prefix. <a href="#4c69d31a37ff24c85679229c479aa1ac"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#f28589472d8c0397db6cef868f2b8c97">GetNamespacePrefix</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> namespaceURI, tStringObj *namespacePrefix)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Obtain the prefix for a registered namespace URI. <a href="#f28589472d8c0397db6cef868f2b8c97"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#a20c84e7549d0a3252fa29a1e83a757a">GetNamespaceURI</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> namespacePrefix, tStringObj *namespaceURI)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Obtain the URI for a registered namespace prefix. <a href="#a20c84e7549d0a3252fa29a1e83a757a"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#3f989597e95db929676273cacd4ea09a">DeleteNamespace</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> namespaceURI)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Delete a namespace from the registry. <a href="#3f989597e95db929676273cacd4ea09a"></a><br></td></tr>
+<tr><td colspan="2"><div class="groupHeader">Alias Functions</div></td></tr>
+<tr><td colspan="2"><div class="groupText">Aliases in XMP serve the same purpose as Windows file shortcuts, Macintosh file aliases, or UNIX file symbolic links. The aliases are simply multiple names for the same property. One distinction of XMP aliases is that they are ordered, there is an alias name pointing to an actual name. The primary significance of the actual name is that it is the preferred name for output, generally the most widely recognized name.<p>
+The names that can be aliased in XMP are restricted. The alias must be a top level property name, not a field within a structure or an element within an array. The actual may be a top level property name, the first element within a top level array, or the default element in an alt-text array. This does not mean the alias can only be a simple property. It is OK to alias a top level structure or array to an identical top level structure or array, or to the first item of an array of structures. <br><br></div></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#b9463c7459125ca0038db2e586c5e4df">RegisterAlias</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> aliasNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> aliasProp, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> actualNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> actualProp, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> arrayForm=kXMP_NoOptions)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Associates an alias name with an actual name. <a href="#b9463c7459125ca0038db2e586c5e4df"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#c4b9c75202f2b961ad92f10a9e504e9a">ResolveAlias</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> aliasNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> aliasProp, tStringObj *actualNS, tStringObj *actualProp, <a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> *arrayForm)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Determines if a name is an alias, and what it is aliased to. <a href="#c4b9c75202f2b961ad92f10a9e504e9a"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#af64964e983235247ef65c86a42a4675">DeleteAlias</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> aliasNS, <a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> aliasProp)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Delete an alias. <a href="#af64964e983235247ef65c86a42a4675"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classTXMPMeta.html#b77cf73fa0cc63d845f113b3d1c83602">RegisterStandardAliases</a> (<a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a> schemaNS)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Registers all of the built-in aliases for a standard namespace. <a href="#b77cf73fa0cc63d845f113b3d1c83602"></a><br></td></tr>
+</table>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+<h3>template&lt;class tStringObj&gt;<br>
+ class TXMPMeta&lt; tStringObj &gt;</h3>
+
+Template class for the XMP Toolkit core services.
+<p>
+<code><a class="el" href="classTXMPMeta.html">TXMPMeta</a></code> is the template class providing the core services of the XMP Toolkit. It should be instantiated with a string class such as std::string. Please read the general toolkit usage notes for information about the overall architecture of the XMP API.<p>
+This template wraps a string object class around the raw XMP API. This provides two significant benefits, output strings are automatically copied and access is fully thread safe. The umbrella header, <code>XMP.hpp</code>, provides an <code>SXMPMeta</code> typedef for the instantiated template. String objects are only necessary for output strings. Input string are literals and passed as typical C <code>const char *</code>.<p>
+The template parameter, class <code>TtStringObj</code>, is described in the XMP.hpp umbrella header.<p>
+<b>Be aware that the <code><a class="el" href="classTXMPMeta.html">TXMPMeta</a></code> class is a normal C++ template, it is instantiated and local to each client executable. As are the other TXMP* classes. Different clients might not even use the same string type to instantiate <code><a class="el" href="classTXMPMeta.html">TXMPMeta</a></code>.</b><p>
+Because of this you should not pass <code>SXMPMeta</code> objects, or pointers to <code>SXMPMeta</code> objects, across DLL boundaries. There is a safe internal reference that you can pass, then construct a local object on the callee side. This construction does not create a cloned XMP tree, it is the same underlying XMP object safely wrapped in each client's <code>SXMPMeta</code> object.<p>
+Use GetInternalRef and the associated constructor like this: <div class="fragment"><pre class="fragment"> --- The callee's header contains:
+ CalleeMethod ( <a class="code" href="XMP__Const_8h.html#5912613564f80e17eb10acef9236f70a">XMPMetaRef</a> xmpRef );
+
+ --- The caller's code contains:
+ SXMPMeta callerXMP;
+ CalleeMethod ( callerXMP.GetInternalRef() );
+
+ --- The callee's code contains:
+ SXMPMeta calleeXMP ( xmpRef );
+</pre></div>
+<p>
+<hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" name="7729cbce91956632289b88d85fdc65ae"></a><!-- doxytag: member="TXMPMeta::TXMPMeta" ref="7729cbce91956632289b88d85fdc65ae" args="()" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt;::<a class="el" href="classTXMPMeta.html">TXMPMeta</a> </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Default constructor, creates an empty object.
+<p>
+The default constructor creates a new empty <code><a class="el" href="classTXMPMeta.html">TXMPMeta</a></code> object.
+</div>
+</div><p>
+<a class="anchor" name="21a4d06fc2e77b28991bb900f0f48e50"></a><!-- doxytag: member="TXMPMeta::TXMPMeta" ref="21a4d06fc2e77b28991bb900f0f48e50" args="(const TXMPMeta&lt; tStringObj &gt; &amp;original)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt;::<a class="el" href="classTXMPMeta.html">TXMPMeta</a> </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt; &amp;&nbsp;</td>
+ <td class="paramname"> <em>original</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Copy constructor, creates a client object refering to the same internal object.
+<p>
+The copy constructor creates a new <code><a class="el" href="classTXMPMeta.html">TXMPMeta</a></code> object that refers to the same internal XMP object.
+</div>
+</div><p>
+<a class="anchor" name="cbe8f556a5b32542c44fa9de9648ad41"></a><!-- doxytag: member="TXMPMeta::TXMPMeta" ref="cbe8f556a5b32542c44fa9de9648ad41" args="(XMPMetaRef xmpRef)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt;::<a class="el" href="classTXMPMeta.html">TXMPMeta</a> </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#5912613564f80e17eb10acef9236f70a">XMPMetaRef</a>&nbsp;</td>
+ <td class="paramname"> <em>xmpRef</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Reconstruct an XMP object from an internal ref.
+<p>
+This constructor creates a new <code><a class="el" href="classTXMPMeta.html">TXMPMeta</a></code> object that refers to the underlying <code>xmpRef</code>, which was obtained from some other XMP object by the <code>GetInternalRef</code> method. This is used to safely pass XMP objects across DLL boundaries.
+</div>
+</div><p>
+<a class="anchor" name="05199e2a4bc61db7aed207759e899bc2"></a><!-- doxytag: member="TXMPMeta::TXMPMeta" ref="05199e2a4bc61db7aed207759e899bc2" args="(XMP_StringPtr buffer, XMP_StringLen xmpSize)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt;::<a class="el" href="classTXMPMeta.html">TXMPMeta</a> </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>buffer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#9f7dcc184f901c713274edfdac5bcc9a">XMP_StringLen</a>&nbsp;</td>
+ <td class="paramname"> <em>xmpSize</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Construct an object and parse one buffer of RDF into it.
+<p>
+This constructor creates a new <code><a class="el" href="classTXMPMeta.html">TXMPMeta</a></code> object and populates it with metadata from a buffer containing serialized RDF. This buffer must be a complete RDF parse stream. Pass (0,0) to construct an empty <code><a class="el" href="classTXMPMeta.html">TXMPMeta</a></code> object. The result of an actual parse is identical to creating an empty object then calling <code><a class="el" href="classTXMPMeta.html#7b383f5b357fff040cdbde82f4f43f26">TXMPMeta::ParseFromBuffer</a></code>. The RDF must be complete. If you need to parse with multiple buffers, create an empty object and use <code><a class="el" href="classTXMPMeta.html#7b383f5b357fff040cdbde82f4f43f26">TXMPMeta::ParseFromBuffer</a></code>.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>buffer</em>&nbsp;</td><td>A pointer to the buffer of RDF to be parsed. May be null if the length is 0.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>xmpSize</em>&nbsp;</td><td>The length in bytes of the buffer. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="bfddf1df0e01ab33d5636a80edc973ca"></a><!-- doxytag: member="TXMPMeta::Initialize" ref="bfddf1df0e01ab33d5636a80edc973ca" args="()" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">static bool <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt;::Initialize </td>
+ <td>(</td>
+ <td class="paramname"> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td width="100%"><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Initialize the XMP Toolkit.
+<p>
+The XMP Toolkit may be explicitly initialized before use. The allocate/delete parameters must be either both null (0), or both non-null.
+</div>
+</div><p>
+<a class="anchor" name="4d5a601c9b77f6f6ab5f14e658de58ef"></a><!-- doxytag: member="TXMPMeta::operator=" ref="4d5a601c9b77f6f6ab5f14e658de58ef" args="(const TXMPMeta&lt; tStringObj &gt; &amp;rhs)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">void <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt;::operator= </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt; &amp;&nbsp;</td>
+ <td class="paramname"> <em>rhs</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Assignment operator, assigns the internal ref and increments the ref count.
+<p>
+The assignment operator assigns the internal ref from the rhs object and increments the reference count on the underlying internal XMP object.
+</div>
+</div><p>
+<a class="anchor" name="e7bb38d9b3857b08106630a386b47332"></a><!-- doxytag: member="TXMPMeta::SetGlobalOptions" ref="e7bb38d9b3857b08106630a386b47332" args="(XMP_OptionBits options)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">static void <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt;::SetGlobalOptions </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a>&nbsp;</td>
+ <td class="paramname"> <em>options</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td width="100%"><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<code>SetGlobalOptions</code> updates the set of global option flags. The entire set is replaced with the new values. If only one flag is to be modified, use <code>GetGlobalOptions</code> to obtain the current set, modify the desired flag, then use <code>SetGlobalOptions</code>.
+<p>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>There are no options to set yet. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="4c69d31a37ff24c85679229c479aa1ac"></a><!-- doxytag: member="TXMPMeta::RegisterNamespace" ref="4c69d31a37ff24c85679229c479aa1ac" args="(XMP_StringPtr namespaceURI, XMP_StringPtr suggestedPrefix, tStringObj *registeredPrefix)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">static bool <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt;::RegisterNamespace </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>namespaceURI</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>suggestedPrefix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">tStringObj *&nbsp;</td>
+ <td class="paramname"> <em>registeredPrefix</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Register a namespace URI with a suggested prefix.
+<p>
+It is not an error if the URI is already registered, no matter what the prefix is. If the URI is not registered but the suggested prefix is in use, a unique prefix is created from the suggested one. The actual registeed prefix is always returned. The function result tells if the registered prefix is the suggested one.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>namespaceURI</em>&nbsp;</td><td>The URI for the namespace. Must be a valid XML URI.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>suggestedPrefix</em>&nbsp;</td><td>The suggested prefix to be used if the URI is not yet registered. Must be a valid XML name.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>registeredPrefix</em>&nbsp;</td><td>Returns the prefix actually registered for this URI.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns true if the registered prefix matches the suggested prefix.</dd></dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>No checking is presently done on either the URI or the prefix. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="f28589472d8c0397db6cef868f2b8c97"></a><!-- doxytag: member="TXMPMeta::GetNamespacePrefix" ref="f28589472d8c0397db6cef868f2b8c97" args="(XMP_StringPtr namespaceURI, tStringObj *namespacePrefix)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">static bool <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt;::GetNamespacePrefix </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>namespaceURI</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">tStringObj *&nbsp;</td>
+ <td class="paramname"> <em>namespacePrefix</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Obtain the prefix for a registered namespace URI.
+<p>
+It is not an error if the namespace URI is not registered. The output <code>namespacePrefix</code> string is not modified if the namespace URI is not registered.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>namespaceURI</em>&nbsp;</td><td>The URI for the namespace. Must not be null or the empty string.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>namespacePrefix</em>&nbsp;</td><td>Returns the prefix registered for this URI, with a terminating ':'.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns true if the namespace URI is registered. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="a20c84e7549d0a3252fa29a1e83a757a"></a><!-- doxytag: member="TXMPMeta::GetNamespaceURI" ref="a20c84e7549d0a3252fa29a1e83a757a" args="(XMP_StringPtr namespacePrefix, tStringObj *namespaceURI)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">static bool <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt;::GetNamespaceURI </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>namespacePrefix</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">tStringObj *&nbsp;</td>
+ <td class="paramname"> <em>namespaceURI</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Obtain the URI for a registered namespace prefix.
+<p>
+It is not an error if the namespace prefix is not registered. The output <code>namespaceURI</code> string is not modified if the namespace prefix is not registered.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>namespacePrefix</em>&nbsp;</td><td>The prefix for the namespace. Must not be null or the empty string.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>namespaceURI</em>&nbsp;</td><td>Returns the URI registered for this prefix.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns true if the namespace prefix is registered. </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="3f989597e95db929676273cacd4ea09a"></a><!-- doxytag: member="TXMPMeta::DeleteNamespace" ref="3f989597e95db929676273cacd4ea09a" args="(XMP_StringPtr namespaceURI)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">static void <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt;::DeleteNamespace </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>namespaceURI</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td width="100%"><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Delete a namespace from the registry.
+<p>
+Does nothing if the URI is not registered, or if the <code>namespaceURI</code> parameter is null or the empty string.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>namespaceURI</em>&nbsp;</td><td>The URI for the namespace.</td></tr>
+ </table>
+</dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd><b>Not yet implemented.</b> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="b9463c7459125ca0038db2e586c5e4df"></a><!-- doxytag: member="TXMPMeta::RegisterAlias" ref="b9463c7459125ca0038db2e586c5e4df" args="(XMP_StringPtr aliasNS, XMP_StringPtr aliasProp, XMP_StringPtr actualNS, XMP_StringPtr actualProp, XMP_OptionBits arrayForm=kXMP_NoOptions)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">static void <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt;::RegisterAlias </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>aliasNS</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>aliasProp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>actualNS</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>actualProp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a>&nbsp;</td>
+ <td class="paramname"> <em>arrayForm</em> = <code>kXMP_NoOptions</code></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Associates an alias name with an actual name.
+<p>
+Define a alias mapping from one namespace/property to another. Both property names must be simple names. An alias can be a direct mapping, where the alias and actual have the same data type. It is also possible to map a simple alias to an item in an array. This can either be to the first item in the array, or to the 'x-default' item in an alt-text array. Multiple alias names may map to the same actual, as long as the forms match. It is a no-op to reregister an alias in an identical fashion.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>aliasNS</em>&nbsp;</td><td>The namespace URI for the alias. Must not be null or the empty string.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>aliasProp</em>&nbsp;</td><td>The name of the alias. Must be a simple name, not null or the empty string and not a general path expression.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>actualNS</em>&nbsp;</td><td>The namespace URI for the actual. Must not be null or the empty string.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>actualProp</em>&nbsp;</td><td>The name of the actual. Must be a simple name, not null or the empty string and not a general path expression.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>arrayForm</em>&nbsp;</td><td>Provides the array form for simple aliases to an array item. This is needed to know what kind of array to create if set for the first time via the simple alias. Pass <code>kXMP_NoOptions</code>, the default value, for all direct aliases regardless of whether the actual data type is an array or not.</td></tr>
+ </table>
+</dl>
+Constants for the arrayForm parameter:<p>
+<ul>
+<li><code>kXMP_NoOptions</code> - This is a direct mapping. The actual data type does not matter. </li>
+<li><code>kXMP_PropValueIsArray</code> - The actual is an unordered array, the alias is to the first element of the array. </li>
+<li><code>kXMP_PropArrayIsOrdered</code> - The actual is an ordered array, the alias is to the first element of the array. </li>
+<li><code>kXMP_PropArrayIsAlternate</code> - The actual is an alternate array, the alias is to the first element of the array. </li>
+<li><code>kXMP_PropArrayIsAltText</code> - The actual is an alternate text array, the alias is to the 'x-default' element of the array. </li>
+</ul>
+
+</div>
+</div><p>
+<a class="anchor" name="c4b9c75202f2b961ad92f10a9e504e9a"></a><!-- doxytag: member="TXMPMeta::ResolveAlias" ref="c4b9c75202f2b961ad92f10a9e504e9a" args="(XMP_StringPtr aliasNS, XMP_StringPtr aliasProp, tStringObj *actualNS, tStringObj *actualProp, XMP_OptionBits *arrayForm)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">static bool <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt;::ResolveAlias </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>aliasNS</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>aliasProp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">tStringObj *&nbsp;</td>
+ <td class="paramname"> <em>actualNS</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">tStringObj *&nbsp;</td>
+ <td class="paramname"> <em>actualProp</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> *&nbsp;</td>
+ <td class="paramname"> <em>arrayForm</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Determines if a name is an alias, and what it is aliased to.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>aliasNS</em>&nbsp;</td><td>The namespace URI for the alias. Must not be null or the empty string.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>aliasProp</em>&nbsp;</td><td>The name of the alias. May be an arbitrary path expression path, must not null or the empty string.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>actualNS</em>&nbsp;</td><td>Untouched if <code>aliasNS:aliasProp</code> is not an alias. Otherwise returns the namespace URI for the actual. May be null if the namespace URI is not wanted.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>actualProp</em>&nbsp;</td><td>Untouched if <code>aliasNS:aliasProp</code> is not an alias. Otherwise returns the path of the actual. May be null if the actual's path is not wanted.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>arrayForm</em>&nbsp;</td><td>Untouched if <code>aliasNS:aliasProp</code> is not an alias. Otherwise returns the form of the actual. This is 0 (<code>kXMP_NoOptions</code>) if the alias and actual forms match, otherwise it is the options passed to <code><a class="el" href="classTXMPMeta.html#b9463c7459125ca0038db2e586c5e4df">TXMPMeta::RegisterAlias</a></code>. May be null if the actual's form is not wanted.</td></tr>
+ </table>
+</dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns true if the input is an alias.</dd></dl>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>The client output strings are not written until return, so a call like the following may be used to "reduce" a path to the base form: <div class="fragment"><pre class="fragment"> isAlias = SXMPMeta::ResolveAlias ( ns.c_str(), path.c_str(), &amp;ns, &amp;path, 0 );
+</pre></div> </dd></dl>
+
+</div>
+</div><p>
+<a class="anchor" name="af64964e983235247ef65c86a42a4675"></a><!-- doxytag: member="TXMPMeta::DeleteAlias" ref="af64964e983235247ef65c86a42a4675" args="(XMP_StringPtr aliasNS, XMP_StringPtr aliasProp)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">static void <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt;::DeleteAlias </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>aliasNS</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>aliasProp</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Delete an alias.
+<p>
+This only deletes the registration of the alias, it does not delete the actual property. It does delete any view of the property through the alias name. It is OK to attempt to delete an alias that does not exist, that is if the alias name is not registered as an alias.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>aliasNS</em>&nbsp;</td><td>The namespace URI for the alias. Must not be null or the empty string.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>aliasProp</em>&nbsp;</td><td>The name of the alias. Must be a simple name, not null or the empty string and not a general path expression. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="b77cf73fa0cc63d845f113b3d1c83602"></a><!-- doxytag: member="TXMPMeta::RegisterStandardAliases" ref="b77cf73fa0cc63d845f113b3d1c83602" args="(XMP_StringPtr schemaNS)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">static void <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt;::RegisterStandardAliases </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>schemaNS</em> </td>
+ <td>&nbsp;)&nbsp;</td>
+ <td width="100%"><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+Registers all of the built-in aliases for a standard namespace.
+<p>
+The built-in aliases are documented in the XMP Specification. This registers the aliases in the given namespace, that is the aliases from this namespace to actuals in other namespaces.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>schemaNS</em>&nbsp;</td><td>The namespace URI for the aliases. Must not be null or the empty string. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="06a3241c7fa5df87f61dff02fca23a0c"></a><!-- doxytag: member="TXMPMeta::GetProperty" ref="06a3241c7fa5df87f61dff02fca23a0c" args="(XMP_StringPtr schemaNS, XMP_StringPtr propName, tStringObj *propValue, XMP_OptionBits *options) const " -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">bool <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt;::GetProperty </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>schemaNS</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>propName</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">tStringObj *&nbsp;</td>
+ <td class="paramname"> <em>propValue</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> *&nbsp;</td>
+ <td class="paramname"> <em>options</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<code>GetProperty</code> is the simplest property getter, mainly for top level simple properties or after using the path composition functions in <code><a class="el" href="classTXMPUtils.html">TXMPUtils</a></code>.
+<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns true if the property exists.</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>schemaNS</em>&nbsp;</td><td>The namespace URI for the property. May be null or the empty string if the first component of the propName path contains a namespace prefix. The URI must be for a registered namespace.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>propName</em>&nbsp;</td><td>The name of the property. May be a general path expression, must not be null or the empty string. Using a namespace prefix on the first component is optional. If present without a <code>schemaNS</code> value then the prefix specifies the namespace. The prefix must be for a registered namespace. If both a <code>schemaNS</code> URI and <code>propName</code> prefix are present, they must be corresponding parts of a registered namespace.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>propValue</em>&nbsp;</td><td>A pointer to the string that is assigned the value of the property, if the property has a value. Arrays and non-leaf levels of structs do not have values. May be null if the value is not wanted.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>options</em>&nbsp;</td><td>A pointer to the <code>XMP_OptionBits</code> variable that is assigned option flags describing the property. May be null if the flags are not wanted. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="c64a4251d157937f69b73f2ffac4f7cc"></a><!-- doxytag: member="TXMPMeta::GetArrayItem" ref="c64a4251d157937f69b73f2ffac4f7cc" args="(XMP_StringPtr schemaNS, XMP_StringPtr arrayName, XMP_Index itemIndex, tStringObj *itemValue, XMP_OptionBits *options) const " -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">bool <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt;::GetArrayItem </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>schemaNS</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>arrayName</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#00e9d9a76c144421105a4c2742203315">XMP_Index</a>&nbsp;</td>
+ <td class="paramname"> <em>itemIndex</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">tStringObj *&nbsp;</td>
+ <td class="paramname"> <em>itemValue</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> *&nbsp;</td>
+ <td class="paramname"> <em>options</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<code>GetArrayItem</code> provides access to items within an array. The index is passed as an integer, you need not worry about the path string syntax for array items, convert a loop index to a string, etc.
+<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns true if the array item exists.</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>schemaNS</em>&nbsp;</td><td>The namespace URI for the array. Has the same usage as in <code>GetProperty</code>.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>arrayName</em>&nbsp;</td><td>The name of the array. May be a general path expression, must not be null or the empty string. Has the same namespace prefix usage as <code>propName</code> in <code>GeProperty</code>.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>itemIndex</em>&nbsp;</td><td>The index of the desired item. Arrays in XMP are indexed from 1. The constant <code>kXMP_ArrayLastItem</code> always refers to the last existing array item.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>itemValue</em>&nbsp;</td><td>A pointer to the string that is assigned the value of the array item, if the array item has a value. Arrays and non-leaf levels of structs do not have values. May be null if the value is not wanted.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>options</em>&nbsp;</td><td>A pointer to the <code>XMP_OptionBits</code> variable that is assigned option flags describing the array item. May be null if the flags are not wanted. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="e99d2bc414d5cd68851147aef6710d4a"></a><!-- doxytag: member="TXMPMeta::GetStructField" ref="e99d2bc414d5cd68851147aef6710d4a" args="(XMP_StringPtr schemaNS, XMP_StringPtr structName, XMP_StringPtr fieldNS, XMP_StringPtr fieldName, tStringObj *fieldValue, XMP_OptionBits *options) const" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">bool <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt;::GetStructField </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>schemaNS</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>structName</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>fieldNS</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>fieldName</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">tStringObj *&nbsp;</td>
+ <td class="paramname"> <em>fieldValue</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> *&nbsp;</td>
+ <td class="paramname"> <em>options</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<code>GetStructField</code> provides access to fields within a nested structure. The namespace for the field is passed as a URI, you need not worry about the path string syntax.
+<p>
+The names of fields should be XML qualified names, that is within an XML namespace. The path syntax for a qualified name uses the namespace prefix. This is unreliable since the prefix is never guaranteed. The URI is the formal name, the prefix is just a local shorthand in a given sequence of XML text.<p>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns true if the field exists.</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>schemaNS</em>&nbsp;</td><td>The namespace URI for the struct. Has the same usage as in <code>GetProperty</code>.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>structName</em>&nbsp;</td><td>The name of the struct. May be a general path expression, must not be null or the empty string. Has the same namespace prefix usage as <code>propName</code> in <code>GetProperty</code>.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>fieldNS</em>&nbsp;</td><td>The namespace URI for the field. Has the same URI and prefix usage as the <code>schemaNS</code> parameter.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>fieldName</em>&nbsp;</td><td>The name of the field. Must be a single XML name, must not be null or the empty string. Has the same namespace prefix usage as the <code>structName</code> parameter.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>fieldValue</em>&nbsp;</td><td>A pointer to the string that is assigned the value of the field, if the field has a value. Arrays and non-leaf levels of structs do not have values. May be null if the value is not wanted.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>options</em>&nbsp;</td><td>A pointer to the <code>XMP_OptionBits</code> variable that is assigned option flags describing the field. May be null if the flags are not wanted. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="2cc58d8316043b035643e7c21633bc13"></a><!-- doxytag: member="TXMPMeta::GetQualifier" ref="2cc58d8316043b035643e7c21633bc13" args="(XMP_StringPtr schemaNS, XMP_StringPtr propName, XMP_StringPtr qualNS, XMP_StringPtr qualName, tStringObj *qualValue, XMP_OptionBits *options) const " -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">bool <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt;::GetQualifier </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>schemaNS</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>propName</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>qualNS</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>qualName</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">tStringObj *&nbsp;</td>
+ <td class="paramname"> <em>qualValue</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a> *&nbsp;</td>
+ <td class="paramname"> <em>options</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<code>GetQualifier</code> provides access to a qualifier attached to a property. The namespace for the qualifier is passed as a URI, you need not worry about the path string syntax. In many regards qualifiers are like struct fields. See the introductory discussion of qualified properties for more information.
+<p>
+The names of qualifiers should be XML qualified names, that is within an XML namespace. The path syntax for a qualified name uses the namespace prefix. This is unreliable since the prefix is never guaranteed. The URI is the formal name, the prefix is just a local shorthand in a given sequence of XML text.<p>
+<dl class="note" compact><dt><b>Note:</b></dt><dd>Qualifiers are only supported for simple leaf properties at this time.</dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Returns true if the qualifier exists.</dd></dl>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>schemaNS</em>&nbsp;</td><td>The namespace URI for the struct. Has the same usage as in <code>GetProperty</code>.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>propName</em>&nbsp;</td><td>The name of the property to which the qualifier is attached. May be a general path expression, must not be null or the empty string. Has the same namespace prefix usage as in <code>GetProperty</code>.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>qualNS</em>&nbsp;</td><td>The namespace URI for the qualifier. Has the same URI and prefix usage as the <code>schemaNS</code> parameter.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>qualName</em>&nbsp;</td><td>The name of the qualifier. Must be a single XML name, must not be null or the empty string. Has the same namespace prefix usage as the <code>propName</code> parameter.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>qualValue</em>&nbsp;</td><td>A pointer to the string that is assigned the value of the qualifier, if the qualifier has a value. Arrays and non-leaf levels of structs do not have values. May be null if the value is not wanted.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>options</em>&nbsp;</td><td>A pointer to the <code>XMP_OptionBits</code> variable that is assigned option flags describing the qualifier. May be null if the flags are not wanted. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="1dfd6a08ebfd1a6364b3a7b6584bcc28"></a><!-- doxytag: member="TXMPMeta::SetProperty" ref="1dfd6a08ebfd1a6364b3a7b6584bcc28" args="(XMP_StringPtr schemaNS, XMP_StringPtr propName, XMP_StringPtr propValue, XMP_OptionBits options=0)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">void <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt;::SetProperty </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>schemaNS</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>propName</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>propValue</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a>&nbsp;</td>
+ <td class="paramname"> <em>options</em> = <code>0</code></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<code>SetProperty</code> is the simplest property setter, mainly for top level simple properties or after using the path composition functions in <code><a class="el" href="classTXMPUtils.html">TXMPUtils</a></code>.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>schemaNS</em>&nbsp;</td><td>The namespace URI for the property. Has the same usage as in <code>GetProperty</code>.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>propName</em>&nbsp;</td><td>The name of the property. Has the same usage as in <code>GetProperty</code>.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>propValue</em>&nbsp;</td><td>A pointer to the null terminated UTF-8 string that is the value of the property, if the property has a value. Arrays and non-leaf levels of structs do not have values. Must be null if the value is not relevant.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>options</em>&nbsp;</td><td>Option flags describing the property. See the earlier description. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="1570eb89d613b4a94ca572e4644168cc"></a><!-- doxytag: member="TXMPMeta::SetArrayItem" ref="1570eb89d613b4a94ca572e4644168cc" args="(XMP_StringPtr schemaNS, XMP_StringPtr arrayName, XMP_Index itemIndex, XMP_StringPtr itemValue, XMP_OptionBits options=0)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">void <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt;::SetArrayItem </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>schemaNS</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>arrayName</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#00e9d9a76c144421105a4c2742203315">XMP_Index</a>&nbsp;</td>
+ <td class="paramname"> <em>itemIndex</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>itemValue</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a>&nbsp;</td>
+ <td class="paramname"> <em>options</em> = <code>0</code></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<code>SetArrayItem</code> provides access to items within an array. The index is passed as an integer, you need not worry about the path string syntax for array items, convert a loop index to a string, etc. The array passed to <code>SetArrayItem</code> must already exist. See also <code>AppendArrayItem</code>.
+<p>
+In normal usage the selected array item is modified. A new item is automatically appended if the index is the array size plus 1. A new item may be inserted before or after any item by using one of the following option flags:<p>
+<ul>
+<li><code>kXMP_InsertBeforeItem</code> - Insert a new array item before the selected one. </li>
+<li><code>kXMP_InsertAfterItem</code> - Insert a new array item after the selected one.</li>
+</ul>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>schemaNS</em>&nbsp;</td><td>The namespace URI for the array. Has the same usage as in <code>GetProperty</code>.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>arrayName</em>&nbsp;</td><td>The name of the array. May be a general path expression, must not be null or the empty string. Has the same namespace prefix usage as <code>propName</code> in <code>GetProperty</code>.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>itemIndex</em>&nbsp;</td><td>The index of the desired item. Arrays in XMP are indexed from 1. The constant <code>kXMP_ArrayLastItem</code> always refers to the last existing array item.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>itemValue</em>&nbsp;</td><td>A pointer to the null terminated UTF-8 string that is the value of the array item, if the array item has a value. Has the same usage as <code>propValue</code> in <code>GetProperty</code>.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>options</em>&nbsp;</td><td>Option flags describing the item. See the earlier description. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="00d7314dc970ad390499ce9db27d314a"></a><!-- doxytag: member="TXMPMeta::AppendArrayItem" ref="00d7314dc970ad390499ce9db27d314a" args="(XMP_StringPtr schemaNS, XMP_StringPtr arrayName, XMP_OptionBits arrayOptions, XMP_StringPtr itemValue, XMP_OptionBits itemOptions=0)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">void <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt;::AppendArrayItem </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>schemaNS</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>arrayName</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a>&nbsp;</td>
+ <td class="paramname"> <em>arrayOptions</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>itemValue</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a>&nbsp;</td>
+ <td class="paramname"> <em>itemOptions</em> = <code>0</code></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<code>AppendArrayItem</code> simplifies construction of an array by not requiring that you pre-create an empty array. The array that is assigned is created automatically if it does not yet exist. Each call to <code>AppendArrayItem</code> appends an item to the array. The corresponding parameters have the same use as <code>SetArrayItem</code>. The <code>arrayOptions</code> parameter is used to specify what kind of array. If the array exists, it must have the specified form.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>schemaNS</em>&nbsp;</td><td>The namespace URI for the array. Has the same usage as in <code>GetProperty</code>.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>arrayName</em>&nbsp;</td><td>The name of the array. May be a general path expression, must not be null or the empty string. Has the same namespace prefix usage as <code>propPath</code> in <code>GetProperty</code>.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>arrayOptions</em>&nbsp;</td><td>Option flags describing the array form. The only valid bits are those that are part of <code>kXMP_PropArrayFormMask:</code> <code>kXMP_PropValueIsArray</code>, <code>kXMP_PropArrayIsOrdered</code>, <code>kXMP_PropArrayIsAlternate</code>, or <code>kXMP_PropArrayIsAltText</code>.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>itemValue</em>&nbsp;</td><td>A pointer to the null terminated UTF-8 string that is the value of the array item, if the array item has a value. Has the same usage as <code>propValue</code> in <code>GetProperty</code>.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>itemOptions</em>&nbsp;</td><td>Option flags describing the item. See the earlier description. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="0e44c30e7527064909e5f7035d53c4f5"></a><!-- doxytag: member="TXMPMeta::SetStructField" ref="0e44c30e7527064909e5f7035d53c4f5" args="(XMP_StringPtr schemaNS, XMP_StringPtr structName, XMP_StringPtr fieldNS, XMP_StringPtr fieldName, XMP_StringPtr fieldValue, XMP_OptionBits options=0)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">void <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt;::SetStructField </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>schemaNS</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>structName</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>fieldNS</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>fieldName</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>fieldValue</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a>&nbsp;</td>
+ <td class="paramname"> <em>options</em> = <code>0</code></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<code>SetStructField</code> provides access to fields within a nested structure. The namespace for the field is passed as a URI, you need not worry about the path string syntax.
+<p>
+The names of fields should be XML qualified names, that is within an XML namespace. The path syntax for a qualified name uses the namespace prefix, which is unreliable because the prefix is never guaranteed. The URI is the formal name, the prefix is just a local shorthand in a given sequence of XML text.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>schemaNS</em>&nbsp;</td><td>The namespace URI for the struct. Has the same usage as in <code>GetProperty</code>.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>structName</em>&nbsp;</td><td>The name of the struct. May be a general path expression, must not be null or the empty string. Has the same namespace prefix usage as <code>propName</code> in <code>GetProperty</code>.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>fieldNS</em>&nbsp;</td><td>The namespace URI for the field. Has the same URI and prefix usage as the <code>schemaNS</code> parameter.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>fieldName</em>&nbsp;</td><td>The name of the field. Must be a single XML name, must not be null or the empty string. Has the same namespace prefix usage as the <code>structName</code> parameter.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>fieldValue</em>&nbsp;</td><td>A pointer to the null terminated UTF-8 string that is the value of the field, if the field has a value. Has the same usage as <code>propValue</code> in <code>GetProperty</code>.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>options</em>&nbsp;</td><td>Option flags describing the field. See the earlier description. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="c2e798da5f9d94e486382a41e73fcea3"></a><!-- doxytag: member="TXMPMeta::SetQualifier" ref="c2e798da5f9d94e486382a41e73fcea3" args="(XMP_StringPtr schemaNS, XMP_StringPtr propName, XMP_StringPtr qualNS, XMP_StringPtr qualName, XMP_StringPtr qualValue, XMP_OptionBits options=0)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">void <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt;::SetQualifier </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>schemaNS</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>propName</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>qualNS</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>qualName</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>qualValue</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#eb865118433be92d88e5f49ed11487c8">XMP_OptionBits</a>&nbsp;</td>
+ <td class="paramname"> <em>options</em> = <code>0</code></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<code>SetQualifier</code> provides access to a qualifier attached to a property. The namespace for the qualifier is passed as a URI, you need not worry about the path string syntax. In many regards qualifiers are like struct fields. See the introductory discussion of qualified properties for more information.
+<p>
+The names of qualifiers should be XML qualified names, that is within an XML namespace. The path syntax for a qualified name uses the namespace prefix, which is unreliable because the prefix is never guaranteed. The URI is the formal name, the prefix is just a local shorthand in a given sequence of XML text.<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>schemaNS</em>&nbsp;</td><td>The namespace URI for the struct. Has the same usage as in <code>GetProperty</code>.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>propName</em>&nbsp;</td><td>The name of the property to which the qualifier is attached. Has the same usage as in <code>GetProperty</code>.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>qualNS</em>&nbsp;</td><td>The namespace URI for the qualifier. Has the same URI and prefix usage as the <code>schemaNS</code> parameter.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>qualName</em>&nbsp;</td><td>The name of the qualifier. Must be a single XML name, must not be null or the empty string. Has the same namespace prefix usage as the <code>propName</code> parameter.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>qualValue</em>&nbsp;</td><td>A pointer to the null terminated UTF-8 string that is the value of the qualifier, if the qualifier has a value. Has the same usage as <code>propValue</code> in <code>GetProperty</code>.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>options</em>&nbsp;</td><td>Option flags describing the qualifier. See the earlier description. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="c8b555ba99904fa49bb4851a60cc3844"></a><!-- doxytag: member="TXMPMeta::DeleteProperty" ref="c8b555ba99904fa49bb4851a60cc3844" args="(XMP_StringPtr schemaNS, XMP_StringPtr propName)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">void <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt;::DeleteProperty </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>schemaNS</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>propName</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<code>DeleteProperty</code> deletes the given XMP subtree rooted at the given property. It is not an error if the property does not exist.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>schemaNS</em>&nbsp;</td><td>The namespace URI for the property. Has the same usage as in <code>GetProperty</code>.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>propName</em>&nbsp;</td><td>The name of the property. Has the same usage as in <code>GetProperty</code>. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="bc1211f47225b5973a170ff952743264"></a><!-- doxytag: member="TXMPMeta::DeleteArrayItem" ref="bc1211f47225b5973a170ff952743264" args="(XMP_StringPtr schemaNS, XMP_StringPtr arrayName, XMP_Index itemIndex)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">void <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt;::DeleteArrayItem </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>schemaNS</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>arrayName</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#00e9d9a76c144421105a4c2742203315">XMP_Index</a>&nbsp;</td>
+ <td class="paramname"> <em>itemIndex</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<code>DeleteArrayItem</code> deletes the given XMP subtree rooted at the given array item. It is not an error if the array item does not exist.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>schemaNS</em>&nbsp;</td><td>The namespace URI for the array. Has the same usage as in <code>GetProperty</code>.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>arrayName</em>&nbsp;</td><td>The name of the array. May be a general path expression, must not be null or the empty string. Has the same namespace prefix usage as <code>propName</code> in <code>GetProperty</code>.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>itemIndex</em>&nbsp;</td><td>The index of the desired item. Arrays in XMP are indexed from 1. The constant <code>kXMP_ArrayLastItem</code> always refers to the last existing array item. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="bc258e027780a15be65a88fcfd4e1fd4"></a><!-- doxytag: member="TXMPMeta::DeleteStructField" ref="bc258e027780a15be65a88fcfd4e1fd4" args="(XMP_StringPtr schemaNS, XMP_StringPtr structName, XMP_StringPtr fieldNS, XMP_StringPtr fieldName)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">void <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt;::DeleteStructField </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>schemaNS</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>structName</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>fieldNS</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>fieldName</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<code>DeleteStructField</code> deletes the given XMP subtree rooted at the given struct field. It is not an error if the field does not exist.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>schemaNS</em>&nbsp;</td><td>The namespace URI for the struct. Has the same usage as in <code>GetProperty</code>.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>structName</em>&nbsp;</td><td>The name of the struct. May be a general path expression, must not be null or the empty string. Has the same namespace prefix usage as <code>propName</code> in <code>GetProperty</code>.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>fieldNS</em>&nbsp;</td><td>The namespace URI for the field. Has the same URI and prefix usage as the <code>schemaNS</code> parameter.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>fieldName</em>&nbsp;</td><td>The name of the field. Must be a single XML name, must not be null or the empty string. Has the same namespace prefix usage as the <code>structName</code> parameter. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="8ce15f7de7fd3b258f07158ab5fa88be"></a><!-- doxytag: member="TXMPMeta::DeleteQualifier" ref="8ce15f7de7fd3b258f07158ab5fa88be" args="(XMP_StringPtr schemaNS, XMP_StringPtr propName, XMP_StringPtr qualNS, XMP_StringPtr qualName)" -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">void <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt;::DeleteQualifier </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>schemaNS</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>propName</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>qualNS</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>qualName</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<code>DeleteQualifier</code> deletes the given XMP subtree rooted at the given qualifier. It is not an error if the qualifier does not exist.
+<p>
+<dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign="top"></td><td valign="top"><em>schemaNS</em>&nbsp;</td><td>The namespace URI for the struct. Has the same usage as in <code>GetProperty</code>.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>propName</em>&nbsp;</td><td>The name of the property to which the qualifier is attached. Has the same usage as in <code>GetProperty</code>.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>qualNS</em>&nbsp;</td><td>The namespace URI for the qualifier. Has the same URI and prefix usage as the <code>schemaNS</code> parameter.</td></tr>
+ <tr><td valign="top"></td><td valign="top"><em>qualName</em>&nbsp;</td><td>The name of the qualifier. Must be a single XML name, must not be null or the empty string. Has the same namespace prefix usage as the <code>propName</code> parameter. </td></tr>
+ </table>
+</dl>
+
+</div>
+</div><p>
+<a class="anchor" name="f22b116d71ecbbebea016ec5337e7066"></a><!-- doxytag: member="TXMPMeta::DoesPropertyExist" ref="f22b116d71ecbbebea016ec5337e7066" args="(XMP_StringPtr schemaNS, XMP_StringPtr propName) const " -->
+<div class="memitem">
+<div class="memproto">
+<div class="memtemplate">
+template&lt;class tStringObj&gt; </div>
+ <table class="memname">
+ <tr>
+ <td class="memname">bool <a class="el" href="classTXMPMeta.html">TXMPMeta</a>&lt; tStringObj &gt;::DoesPropertyExist </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>schemaNS</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="XMP__Const_8h.html#d439e3ceeb4590d310f6125aa12c6df6">XMP_StringPtr</a>&nbsp;</td>
+ <td class="paramname"> <em>propName</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td width="100%"> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>
+<code>DoesPropertyExist</code> tells if the property exists.