diff --git a/xmpsdk/include/TXMPIterator.hpp b/xmpsdk/include/TXMPIterator.hpp index 603db687..33c73a1f 100644 --- a/xmpsdk/include/TXMPIterator.hpp +++ b/xmpsdk/include/TXMPIterator.hpp @@ -2,12 +2,12 @@ #define __TXMPIterator_hpp__ 1 #if ( ! __XMP_hpp__ ) - #error "Do not directly include, use XMP.hpp" + #error "Do not directly include, use XMPSDK.hpp" #endif // ================================================================================================= // ADOBE SYSTEMS INCORPORATED -// Copyright 2002 Adobe Systems Incorporated +// 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 @@ -19,7 +19,7 @@ /// \brief API for access to the XMP Toolkit iteration services. /// /// \c TXMPIterator is the template class providing iteration services for the XMP Toolkit. It must -/// be instantiated with a string class such as \c std::string. See the instructions in XMP.hpp, and +/// be instantiated with a string class such as \c std::string. See the instructions in XMPSDK.hpp, and /// the Overview for a discussion of the overall architecture of the XMP API. // ================================================================================================= @@ -29,7 +29,7 @@ /// /// \c TXMPIterator provides a uniform means to iterate over the schema and properties within an XMP /// object. \c TXMPIterator is a template class which must be instantiated with a string class such -/// as \c std::string. See the instructions in XMP.hpp, and the Overview for a discussion of the +/// as \c std::string. See the instructions in XMPSDK.hpp, and the Overview for a discussion of the /// overall architecture of the XMP API. Access these functions through the concrete class, /// \c SXMPIterator. /// @@ -62,7 +62,7 @@ /// are visited next. The fields of a struct or items of an array are visited after the qualifiers /// of the parent. /// -/// You can specify options when contructing the iteration object to control how the iteration is +/// You can specify options when constructing the iteration object to control how the iteration is /// performed. /// /// \li \c #kXMP_IterJustChildren - Visit just the immediate children of the root. Skip the root @@ -71,6 +71,8 @@ /// \li \c #kXMP_IterJustLeafNodes - Visit just the leaf property nodes and their qualifiers. /// \li \c #kXMP_IterJustLeafName - Return just the leaf component of the node names. The default /// is to return the full path name. +/// \li \c #kXMP_IterIncludeAliases - Include aliases as part of the iteration. Since aliases are +/// not actual nodes the default iteration does not visit them. /// \li \c #kXMP_IterOmitQualifiers - Do not visit the qualifiers of a node. // ================================================================================================= @@ -226,8 +228,6 @@ private: TXMPIterator(); // ! Hidden, must choose property or table iteration. - static void SetClientString ( void * clientPtr, XMP_StringPtr valuePtr, XMP_StringLen valueLen ); - }; // class TXMPIterator // ================================================================================================= diff --git a/xmpsdk/include/TXMPMeta.hpp b/xmpsdk/include/TXMPMeta.hpp index 5a3e576f..0bf04e15 100644 --- a/xmpsdk/include/TXMPMeta.hpp +++ b/xmpsdk/include/TXMPMeta.hpp @@ -2,17 +2,12 @@ #define __TXMPMeta_hpp__ 1 #if ( ! __XMP_hpp__ ) - #error "Do not directly include, use XMP.hpp" -#endif - -#include "XMPCore/XMPCoreDefines.h" -#if ENABLE_CPP_DOM_MODEL - #include "XMPCore/XMPCoreFwdDeclarations.h" + #error "Do not directly include, use XMPSDK.hpp" #endif // ================================================================================================= // ADOBE SYSTEMS INCORPORATED -// Copyright 2002 Adobe Systems Incorporated +// Copyright 2002-2008 Adobe Systems Incorporated // All Rights Reserved // // NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms @@ -25,9 +20,8 @@ /// /// \c TXMPMeta is the template class providing the core services of the XMP Toolkit. It must be /// instantiated with a string class such as \c std::string. Read the Toolkit Overview for -/// information about the overall architecture of the XMP API, and the documentation for \c XMP.hpp -/// for specific instantiation instructions. Please that you MUST NOT derive a class from this class, -/// consider this class FINAL, use it directly. [1279031] +/// information about the overall architecture of the XMP API, and the documentation for \c XMPSDK.hpp +/// for specific instantiation instructions. /// /// Access these functions through the concrete class, \c SXMPMeta. // ================================================================================================= @@ -38,7 +32,7 @@ /// /// \c TXMPMeta is the template class providing the core services of the XMP Toolkit. It should be /// instantiated with a string class such as \c std::string. Read the Toolkit Overview for -/// information about the overall architecture of the XMP API, and the documentation for \c XMP.hpp +/// information about the overall architecture of the XMP API, and the documentation for \c XMPSDK.hpp /// for specific instantiation instructions. /// /// Access these functions through the concrete class, \c SXMPMeta. @@ -105,7 +99,7 @@ public: // ============================================================================================= // Constuctors and destructor - // ========================== + // ========================= // --------------------------------------------------------------------------------------------- /// \name Constructors and destructor @@ -241,6 +235,23 @@ public: static XMP_Status DumpNamespaces ( XMP_TextOutputProc outProc, void * clientData ); + // --------------------------------------------------------------------------------------------- + /// @brief \c DumpAliases() sends the list of registered aliases and corresponding actuals to a handler. + /// + /// For debugging. Invokes a client-defined callback for each line of output. + /// + /// This function is static; make the call directly from the concrete class (\c SXMPMeta). + /// + /// @param outProc The client-defined procedure to handle each line of output. + /// + /// @param clientData A pointer to client-defined data to pass to the handler. + /// + /// @return A success-fail status value, returned from the handler. Zero is success, failure + /// values are client-defined. + + static XMP_Status DumpAliases ( XMP_TextOutputProc outProc, + void * clientData ); + /// @} // --------------------------------------------------------------------------------------------- @@ -256,30 +267,20 @@ public: /// new URI. // --------------------------------------------------------------------------------------------- - /// @brief \c RegisterNamespace() registers a namespace URI with a suggested prefix. + /// @brief \c RegisterNamespace() registers a namespace URI with a prefix. /// - /// If the URI is not registered but the suggested prefix is in use, a unique prefix is created - /// from the suggested one. The actual registered prefix is returned. The function result tells - /// if the registered prefix is the suggested one. It is not an error if the URI is already - /// registered, regardless of the prefix. + /// If the the prefix is in use, the URI of the existing prefix is overwritten. /// /// This function is static; make the call directly from the concrete class (\c SXMPMeta). /// /// @param namespaceURI The URI for the namespace. Must be a valid XML URI. /// - /// @param suggestedPrefix The suggested prefix to be used if the URI is not yet registered. - /// Must be a valid XML name. - /// - /// @param registeredPrefix [out] A string object in which to return the prefix actually - /// registered for this URI. - /// - /// @return True if the registered prefix matches the suggested prefix. + /// @param prefix The prefix to be used. Must be a valid XML name. /// /// @note No checking is done on either the URI or the prefix. */ - static bool RegisterNamespace ( XMP_StringPtr namespaceURI, - XMP_StringPtr suggestedPrefix, - tStringObj * registeredPrefix ); + static void RegisterNamespace ( XMP_StringPtr namespaceURI, + XMP_StringPtr prefix ); // --------------------------------------------------------------------------------------------- /// @brief \c GetNamespacePrefix() obtains the prefix for a registered namespace URI, and @@ -330,6 +331,132 @@ public: /// @} + // --------------------------------------------------------------------------------------------- + /// \name Alias functions + /// @{ + /// + /// Aliases in XMP serve the same purpose as Windows file shortcuts, Mac OS file aliases, or + /// UNIX file symbolic links. The aliases are multiple names for the same property. One + /// distinction of XMP aliases is that they are ordered. An alias name points 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. + /// + /// XMP restricts the names that can be aliased. The alias must be a top-level property name, + /// not a field within a structure or an element within an array. The actual can 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; you can 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. + + // --------------------------------------------------------------------------------------------- + /// @brief \c RegisterAlias() associates an alias name with an actual name. + /// + /// Defines an 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 can map to the same actual, as long as the forms match. It is a no-op to + /// reregister an alias in an identical fashion. + /// + /// This function is static; make the call directly from the concrete class (\c SXMPMeta). + /// + /// @param aliasNS The namespace URI for the alias. Must not be null or the empty string. + /// + /// @param aliasProp The name of the alias. Must be a simple name, not null or the empty string + /// and not a general path expression. + /// + /// @param actualNS The namespace URI for the actual. Must not be null or the empty string. + /// + /// @param actualProp The name of the actual. Must be a simple name, not null or the empty string + /// and not a general path expression. + /// + /// @param arrayForm 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 + /// \c #kXMP_NoOptions, the default value, for all direct aliases regardless of whether the actual + /// data type is an array or not. One of these constants: + /// + /// \li \c #kXMP_NoOptions - This is a direct mapping. The actual data type does not matter. + /// \li \c #kXMP_PropValueIsArray - The actual is an unordered array, the alias is to the + /// first element of the array. + /// \li \c #kXMP_PropArrayIsOrdered - The actual is an ordered array, the alias is to the + /// first element of the array. + /// \li \c #kXMP_PropArrayIsAlternate - The actual is an alternate array, the alias is to the + /// first element of the array. + /// \li \c #kXMP_PropArrayIsAltText - The actual is an alternate text array, the alias is to + /// the 'x-default' element of the array. */ + + static void RegisterAlias ( XMP_StringPtr aliasNS, + XMP_StringPtr aliasProp, + XMP_StringPtr actualNS, + XMP_StringPtr actualProp, + XMP_OptionBits arrayForm = kXMP_NoOptions ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c ResolveAlias() reports whether a name is an alias, and what it is aliased to. + /// + /// Output strings are not written until return, so you can use this to + /// "reduce" a path to the base form as follows: + ///
+ /// isAlias = SXMPMeta::ResolveAlias ( ns.c_str(), path.c_str(), &ns, &path, 0 ); + ///+ /// This function is static; make the call directly from the concrete class (\c SXMPMeta). + /// + /// @param aliasNS The namespace URI for the alias. Must not be null or the empty string. + /// + /// @param aliasProp The name of the alias. Can be an arbitrary path expression path, must not + /// null or the empty string. + /// + /// @param actualNS [out] A string object in which to return the namespace URI for the actual. + /// Not modified if the given name is not an alias. Can be null if the namespace URI is not wanted. + /// + /// @param actualProp [out] A string object in which to return the path of the actual. + /// Not modified if the given name is not an alias. Can be null if the actual's path is not wanted. + /// + /// @param arrayForm [out] A string object in which to return the array form of the actual. This + /// is 0 (\c #kXMP_NoOptions) if the alias and actual forms match, otherwise it is the options + /// passed to \c TXMPMeta::RegisterAlias(). Not modified if the given name is not an alias. Can + /// be null if the actual's array form is not wanted. + /// + /// @return True if the provided name is an alias. + + static bool ResolveAlias ( XMP_StringPtr aliasNS, + XMP_StringPtr aliasProp, + tStringObj * actualNS, + tStringObj * actualProp, + XMP_OptionBits * arrayForm ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c DeleteAlias() deletes an alias. + /// + /// This deletes only the registration of the alias, it does not delete the actual property. + /// It deletes any view of the property through the alias name. + /// + /// This function is static; make the call directly from the concrete class (\c SXMPMeta). + /// + /// @param aliasNS The namespace URI for the alias. Must not be null or the empty string. + /// + /// @param aliasProp The name of the alias. Must be a simple name, not null or the empty string + /// and not a general path expression. It is not an error to provide + /// a name that has not been registered as an alias. + + static void DeleteAlias ( XMP_StringPtr aliasNS, + XMP_StringPtr aliasProp ); + + // --------------------------------------------------------------------------------------------- + /// @brief \c RegisterStandardAliases() registers all of the built-in aliases for a standard namespace. + /// + /// The built-in aliases are documented in the XMP Specification. This function registers the + /// aliases in the given namespace; that is, it creates the aliases from this namespace to + /// actuals in other namespaces. + /// + /// This function is static; make the call directly from the concrete class (\c SXMPMeta). + /// + /// @param schemaNS The namespace URI for the aliases. Must not be null or the empty string. + + static void RegisterStandardAliases ( XMP_StringPtr schemaNS ); + + /// @} + // ============================================================================================= // Basic property manipulation functions // ===================================== @@ -366,7 +493,8 @@ public: /// parts of a registered namespace. /// /// @param schemaNS The namespace URI for the property. The URI must be for a registered - /// namespace. Must not be null or the empty string. + /// namespace. Can be null or the empty string if the first component of the \c propName path + /// contains a namespace prefix. /// /// @param propName The name of the property. Can be a general path expression, must not be null /// or the empty string. The first component can be a namespace prefix; if present without a @@ -957,7 +1085,7 @@ public: bool GetProperty_Int ( XMP_StringPtr schemaNS, XMP_StringPtr propName, - XMP_Int32 * propValue, + long * propValue, XMP_OptionBits * options ) const; // --------------------------------------------------------------------------------------------- @@ -982,7 +1110,7 @@ public: bool GetProperty_Int64 ( XMP_StringPtr schemaNS, XMP_StringPtr propName, - XMP_Int64 * propValue, + long long * propValue, XMP_OptionBits * options ) const; // --------------------------------------------------------------------------------------------- @@ -1076,7 +1204,7 @@ public: void SetProperty_Int ( XMP_StringPtr schemaNS, XMP_StringPtr propName, - XMP_Int32 propValue, + long propValue, XMP_OptionBits options = 0 ); // --------------------------------------------------------------------------------------------- @@ -1098,7 +1226,7 @@ public: void SetProperty_Int64 ( XMP_StringPtr schemaNS, XMP_StringPtr propName, - XMP_Int64 propValue, + long long propValue, XMP_OptionBits options = 0 ); // --------------------------------------------------------------------------------------------- @@ -1366,30 +1494,8 @@ public: XMP_StringPtr specificLang, const tStringObj & itemValue, XMP_OptionBits options = 0 ); - - // --------------------------------------------------------------------------------------------- - /// @brief \c DeleteLocalizedText() deletes specific language alternatives from an alt-text array. - /// - /// The rules for finding the language value to delete are similar to those for \c #SetLocalizedText(). - /// - /// @param schemaNS The namespace URI for the alt-text array; see \c #GetProperty(). - /// - /// @param altTextName The name of the alt-text array. Can be a general path expression, must - /// not be null or the empty string; see \c #GetProperty() for namespace prefix usage. - /// - /// @param genericLang The name of the generic language as an RFC 3066 primary subtag. Can be - /// null or the empty string if no generic language is wanted. - /// - /// @param specificLang The name of the specific language as an RFC 3066 tag, or "x-default". - /// Must not be null or the empty string. - /// - void - DeleteLocalizedText ( XMP_StringPtr schemaNS, - XMP_StringPtr altTextName, - XMP_StringPtr genericLang, - XMP_StringPtr specificLang ); - /// @} + /// @} // ============================================================================================= /// \name Creating and reading serialized RDF. @@ -1449,6 +1555,7 @@ public: /// \li \c kXMP_ReadOnlyPacket - Create a read-only XML packet wapper. Cannot be specified /// together with \c kXMP_OmitPacketWrapper. /// \li \c kXMP_UseCompactFormat - Use a highly compact RDF syntax and layout. + /// \li \c kXMP_WriteAliasComments - Include XML comments for aliases. /// \li \c kXMP_IncludeThumbnailPad - Include typical space for a JPEG thumbnail in the /// padding if no \c xmp:Thumbnails property is present. Cannot be specified together with /// \c kXMP_OmitPacketWrapper. @@ -1500,6 +1607,7 @@ public: /// \li \c kXMP_ReadOnlyPacket - Create a read-only XML packet wapper. Cannot be specified /// together with \c kXMP_OmitPacketWrapper. /// \li \c kXMP_UseCompactFormat - Use a highly compact RDF syntax and layout. + /// \li \c kXMP_WriteAliasComments - Include XML comments for aliases. /// \li \c kXMP_IncludeThumbnailPad - Include typical space for a JPEG thumbnail in the /// padding if no \c xmp:Thumbnails property is present. Cannot be specified together with /// \c kXMP_OmitPacketWrapper. @@ -1664,7 +1772,7 @@ public: /// @return A success-fail status value, returned from the handler. Zero is success, failure /// values are client-defined. /// - /// @see Static function \c DumpNamespaces() + /// @see Static functions \c DumpNamespaces() and \c DumpAliases() XMP_Status DumpObject ( XMP_TextOutputProc outProc, void * clientData ) const; @@ -1679,65 +1787,6 @@ public: /// @} - // ============================================================================================= - // Error notifications - // =================== - - // --------------------------------------------------------------------------------------------- - /// \name Error notifications - /// @{ - /// - /// From the beginning through version 5.5, XMP Tookit errors result in throwing an \c XMP_Error - /// exception. For the most part exceptions were thrown early and thus API calls aborted as soon - /// as an error was detected. Starting in version 5.5, support has been added for notifications - /// of errors arising in calls to \c TXMPMeta functions. - /// - /// A client can register an error notification callback function for a \c TXMPMeta object. This - /// can be done as a global default or individually to each object. The global default applies - /// to all objects created after it is registered. Within the object there is no difference - /// between the global default or explicitly registered callback. The callback function returns - /// a \c bool value indicating if recovery should be attempted (true) or an exception thrown - /// (false). If no callback is registered, a best effort at recovery and continuation will be - /// made with an exception thrown if recovery is not possible. - /// - /// The number of notifications delivered for a given TXMPMeta object can be limited. This is - /// intended to reduce chatter from multiple or cascading errors. The limit is set when the - /// callback function is registered. This limits the number of notifications of the highest - /// severity delivered or less. If a higher severity error occurs, the counting starts again. - /// The limit and counting can be reset at any time, see \c ResetErrorCallbackLimit. - - // -------------------------------------------------------------------------------------------- - /// @brief SetDefaultErrorCallback() registers a global default error notification callback. - /// - /// @param proc The client's callback function. - /// - /// @param context Client-provided context for the callback. - /// - /// @param limit A limit on the number of notifications to be delivered. - - static void SetDefaultErrorCallback ( XMPMeta_ErrorCallbackProc proc, void* context = 0, XMP_Uns32 limit = 1 ); - - // -------------------------------------------------------------------------------------------- - /// @brief SetErrorCallback() registers an error notification callback. - /// - /// @param proc The client's callback function. - /// - /// @param context Client-provided context for the callback. - /// - /// @param limit A limit on the number of notifications to be delivered. - - void SetErrorCallback ( XMPMeta_ErrorCallbackProc proc, void* context = 0, XMP_Uns32 limit = 1 ); - - // -------------------------------------------------------------------------------------------- - /// @brief ResetErrorCallbackLimit() resets the error notification limit and counting. It has no - /// effect if an error notification callback function is not registered. - /// - /// @param limit A limit on the number of notifications to be delivered. - - void ResetErrorCallbackLimit ( XMP_Uns32 limit = 1 ); - - /// @} - // ============================================================================================= XMPMetaRef xmpRef; // *** Should be private, see below. @@ -1749,8 +1798,6 @@ private: friend class TXMPUtils
+ /// AppendProperties ( sourceXMP, destXMP, options ): + /// doAll = options & kXMPUtil_DoAllProperties + /// replaceOld = options & kXMPUtil_ReplaceOldValues + /// deleteEmpty = options & kXMPUtil_DeleteEmptyValues + /// for all source schema (top level namespaces): + /// for all top level properties in sourceSchema: + /// if doAll or prop is external: + /// AppendSubtree ( sourceNode, destSchema, replaceOld, deleteEmpty ) + /// + /// AppendSubtree ( sourceNode, destParent, replaceOld, deleteEmpty ): + /// if deleteEmpty and source value is empty: + /// delete the corresponding child from destParent + /// else if sourceNode not in destParent (by name): + /// copy sourceNode's subtree to destParent + /// else if replaceOld: + /// delete subtree from destParent + /// copy sourceNode's subtree to destParent + /// else: // (Already exists in dest and not replacing, merge structs and arrays) + /// if sourceNode and destNode forms differ: + /// return, leave the destNode alone + /// else if form is a struct: + /// for each field in sourceNode: + /// AppendSubtree ( sourceNode.field, destNode, replaceOld ) + /// else if form is an alt-text array: + /// copy new items by xml:lang value into the destination + /// else if form is an array: + /// copy new items by value into the destination, ignoring order and duplicates + ///+ /// + /// Array item checking is n-squared; this can be time-intensive if the replace-old options is + /// not specified. Each source item is checked to see if it already exists in the destination, + /// without regard to order or duplicates. Simple items are compared by value and \c xml:lang + /// qualifier; other qualifiers are ignored. Structs are recursively compared by field names, + /// without regard to field order. Arrays are compared by recursively comparing all items. + /// + /// @param source The source XMP object. + /// + /// @param dest The destination XMP object. + /// + /// @param options Option flags to control the copying. A logical OR of these bit-flag constants: + /// \li \c kXMPUtil_DoAllProperties - Operate on internal properties in addition to external properties. + /// \li \c kXMPUtil_ReplaceOldValues - Replace the values of existing properties. + /// \li \c kXMPUtil_DeleteEmptyValues - Delete properties if the new value is empty. + + static void AppendProperties ( const TXMPMeta
options &
+/// \brief The type for a collection of 32 flag bits. Individual flags are defined as enum value bit
+/// masks; see \c #kXMP_PropValueIsURI and following. A number of macros provide common set or set
+/// operations, such as \c XMP_PropIsSimple. For other tests use an expression like options &
/// kXMP_. When passing multiple option flags use the bitwise-OR operator. '|',
/// not the arithmatic plus, '+'.
@@ -184,8 +120,8 @@ typedef XMP_Uns32 XMP_OptionBits; // Used as 32 individual bits.
#define kXMP_TrueStr "True" // Serialized XMP spellings, not for the type bool.
#define kXMP_FalseStr "False"
-///@brief Type for yes/no/maybe answers. The values are picked to allow Boolean-like usage. The yes
-///values are true (non-zero), the no value is false (zero).
+/// Type for yes/no/maybe answers. The values are picked to allow Boolean-like usage. The yes and
+/// values are true (non-zero), the no value is false (zero).
enum {
/// The part or parts have definitely changed.
kXMPTS_Yes = 1,
@@ -240,18 +176,9 @@ struct XMP_DateTime {
/// The second in the range 0..59.
XMP_Int32 second;
- /// Is the date portion meaningful?
- XMP_Bool hasDate;
-
- /// Is the time portion meaningful?
- XMP_Bool hasTime;
-
- /// Is the time zone meaningful?
- XMP_Bool hasTimeZone;
-
/// The "sign" of the time zone, \c #kXMP_TimeIsUTC (0) means UTC, \c #kXMP_TimeWestOfUTC (-1)
/// is west, \c #kXMP_TimeEastOfUTC (+1) is east.
- XMP_Int8 tzSign;
+ XMP_Int32 tzSign;
/// The time zone hour in the range 0..23.
XMP_Int32 tzHour;
@@ -262,11 +189,6 @@ struct XMP_DateTime {
/// Nanoseconds within a second, often left as zero.
XMP_Int32 nanoSecond;
- #if __cplusplus
- XMP_DateTime() : year(0), month(0), day(0), hour(0), minute(0), second(0),
- hasDate(false),hasTime(false), hasTimeZone(false), tzSign(0), tzHour(0), tzMinute(0), nanoSecond(0){};
- #endif
-
};
/// Constant values for \c XMP_DateTime::tzSign field.
@@ -279,11 +201,6 @@ enum {
kXMP_TimeEastOfUTC = +1
};
-#define XMPDateTime_IsDateOnly(dt) ((dt).hasDate & (! (dt).hasTime))
-#define XMPDateTime_IsTimeOnly(dt) ((dt).hasTime & (! (dt).hasDate))
-
-#define XMPDateTime_ClearTimeZone(dt) { (dt).hasTimeZone = (dt).tzSign = (dt).tzHour = (dt).tzMinute = 0; }
-
// =================================================================================================
// Standard namespace URI constants
// ================================
@@ -341,20 +258,14 @@ enum {
#define kXMP_NS_JP2K "http://ns.adobe.com/jp2k/1.0/"
#define kXMP_NS_CameraRaw "http://ns.adobe.com/camera-raw-settings/1.0/"
#define kXMP_NS_DM "http://ns.adobe.com/xmp/1.0/DynamicMedia/"
-#define kXMP_NS_Script "http://ns.adobe.com/xmp/1.0/Script/"
#define kXMP_NS_ASF "http://ns.adobe.com/asf/1.0/"
#define kXMP_NS_WAV "http://ns.adobe.com/xmp/wav/1.0/"
-#define kXMP_NS_BWF "http://ns.adobe.com/bwf/bext/1.0/"
-#define kXMP_NS_AEScart "http://ns.adobe.com/aes/cart/"
-#define kXMP_NS_RIFFINFO "http://ns.adobe.com/riff/info/"
-#define kXMP_NS_iXML "http://ns.adobe.com/ixml/1.0/"
+
#define kXMP_NS_XMP_Note "http://ns.adobe.com/xmp/note/"
#define kXMP_NS_AdobeStockPhoto "http://ns.adobe.com/StockPhoto/1.0/"
#define kXMP_NS_CreatorAtom "http://ns.adobe.com/creatorAtom/1.0/"
-#define kXMP_NS_ExifEX "http://cipa.jp/exif/1.0/"
-
/// \name XML namespace constants for qualifiers and structured property fields.
/// @{
///
@@ -408,9 +319,6 @@ enum {
/// \def kXMP_NS_IPTCCore
/// \brief The XML namespace for the IPTC Core schema.
///
-/// \def kXMP_NS_IPTCExt
-/// \brief The XML namespace for the IPTC Extension schema.
-///
/// \def kXMP_NS_RDF
/// \brief The XML namespace for RDF.
///
@@ -419,15 +327,12 @@ enum {
///
/// @}
-#define kXMP_NS_DC "http://purl.org/dc/elements/1.1/"
+#define kXMP_NS_DC "http://purl.org/dc/elements/1.1/"
#define kXMP_NS_IPTCCore "http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/"
-#define kXMP_NS_IPTCExt "http://iptc.org/std/Iptc4xmpExt/2008-02-29/"
#define kXMP_NS_DICOM "http://ns.adobe.com/DICOM/"
-#define kXMP_NS_PLUS "http://ns.useplus.org/ldf/xmp/1.0/"
-
#define kXMP_NS_PDFA_Schema "http://www.aiim.org/pdfa/ns/schema#"
#define kXMP_NS_PDFA_Property "http://www.aiim.org/pdfa/ns/property#"
#define kXMP_NS_PDFA_Type "http://www.aiim.org/pdfa/ns/type#"
@@ -573,7 +478,7 @@ enum {
// -------------------------------------------------------------------------------------------------
-/// @brief Option bit flags for the \c TXMPMeta property accessor functions.
+/// Option bit flags for the \c TXMPMeta property accessor functions.
enum {
/// The XML string form of the property value is a URI, use rdf:resource attribute. DISCOURAGED
@@ -666,8 +571,8 @@ enum {
#define kXMP_SchemaNode ((XMP_OptionBits)0x80000000UL)
-/// @brief Option bit flags for the \c TXMPMeta property setting functions.
-/// @details These option bits are shared with the accessor functions:
+/// Option bit flags for the \c TXMPMeta property setting functions. These option bits are shared
+/// with the accessor functions:
/// \li \c #kXMP_PropValueIsURI
/// \li \c #kXMP_PropValueIsStruct
/// \li \c #kXMP_PropValueIsArray
@@ -695,7 +600,7 @@ enum {
// -------------------------------------------------------------------------------------------------
-/// @brief Option bit flags for \c TXMPMeta::ParseFromBuffer().
+/// Option bit flags for \c TXMPMeta::ParseFromBuffer().
enum {
/// Require a surrounding \c x:xmpmeta element.
@@ -709,7 +614,7 @@ enum {
};
-/// @brief Option bit flags for \c TXMPMeta::SerializeToBuffer().
+/// Option bit flags for \c TXMPMeta::SerializeToBuffer().
enum {
// *** Option to remove empty struct/array, or leaf with empty value?
@@ -723,23 +628,20 @@ enum {
/// Use a compact form of RDF.
kXMP_UseCompactFormat = 0x0040UL,
- /// Use a canonical form of RDF.
- kXMP_UseCanonicalFormat = 0x0080UL,
-
/// Include a padding allowance for a thumbnail image.
kXMP_IncludeThumbnailPad = 0x0100UL,
/// The padding parameter is the overall packet length.
kXMP_ExactPacketLength = 0x0200UL,
+ /// Show aliases as XML comments.
+ kXMP_WriteAliasComments = 0x0400UL,
+
/// Omit all formatting whitespace.
kXMP_OmitAllFormatting = 0x0800UL,
-
+
/// Omit the x:xmpmeta element surrounding the rdf:RDF element.
- kXMP_OmitXMPMetaElement = 0x1000UL,
-
- /// Include a rdf Hash and Merged flag in x:xmpmeta element.
- kXMP_IncludeRDFHash = 0x2000UL,
+ kXMP_OmitXMPMetaElement = 0x1000UL,
_XMP_LittleEndian_Bit = 0x0001UL, // ! Don't use directly, see the combined values below!
_XMP_UTF16_Bit = 0x0002UL,
@@ -767,7 +669,7 @@ enum {
// -------------------------------------------------------------------------------------------------
-/// @brief Option bit flags for \c TXMPIterator construction.
+/// Option bit flags for \c TXMPIterator construction.
enum {
/// The low 8 bits are an enum of what data structure to iterate.
@@ -791,12 +693,15 @@ enum {
/// Return just the leaf part of the path, default is the full path.
kXMP_IterJustLeafName = 0x0400UL,
+ /// Include aliases, default is just actual properties.
+ kXMP_IterIncludeAliases = 0x0800UL,
+
/// Omit all qualifiers.
kXMP_IterOmitQualifiers = 0x1000UL
};
-/// @brief Option bit flags for \c TXMPIterator::Skip().
+/// Option bit flags for \c TXMPIterator::Skip().
enum {
/// Skip the subtree below the current node.
@@ -808,11 +713,10 @@ enum {
};
// -------------------------------------------------------------------------------------------------
-
-/// @brief Option bit flags for \c TXMPUtils::CatenateArrayItems() and \c TXMPUtils::SeparateArrayItems().
-/// @details These option bits are shared with the accessor functions:
+/// Option bit flags for \c TXMPUtils::CatenateArrayItems() and \c TXMPUtils::SeparateArrayItems().
+/// These option bits are shared with the accessor functions:
/// \li \c #kXMP_PropValueIsArray,
-/// \li \c #kXMP_PropArrayIsOrdered,
+/// \li \c #kXMP_PropArrayIsOrdered,
/// \li \c #kXMP_PropArrayIsAlternate,
/// \li \c #kXMP_PropArrayIsAltText
enum {
@@ -822,27 +726,7 @@ enum {
};
-/// @brief Option bit flags for \c TXMPUtils::ApplyTemplate().
-enum {
-
- /// Do all properties, default is just external properties.
- kXMPTemplate_IncludeInternalProperties = 0x0001UL,
-
- /// Perform a Replace operation, add new properties and modify existing ones.
- kXMPTemplate_ReplaceExistingProperties = 0x0002UL,
-
- /// Similar to Replace, also delete if the template has an empty value.
- kXMPTemplate_ReplaceWithDeleteEmpty = 0x0004UL,
-
- /// Perform an Add operation, add properties if they don't already exist.
- kXMPTemplate_AddNewProperties = 0x0008UL,
-
- /// Perform a Clear operation, keep named properties and delete everything else.
- kXMPTemplate_ClearUnnamedProperties = 0x0010UL
-
-};
-
-/// @brief Option bit flags for \c TXMPUtils::RemoveProperties() and \c TXMPUtils::AppendProperties().
+/// Option bit flags for \c TXMPUtils::RemoveProperties() and \c TXMPUtils::AppendProperties().
enum {
/// Do all properties, default is just external properties.
@@ -863,12 +747,9 @@ enum {
// Types and Constants for XMPFiles
// ================================
-/// @brief Seek mode constants for use with XMP_IO and inside XMPFiles library code.
-enum SeekMode { kXMP_SeekFromStart, kXMP_SeekFromCurrent, kXMP_SeekFromEnd };
-
-/// @brief File format constants for use with XMPFiles.
+/// File format constants for use with XMPFiles.
enum {
-
+
// ! Hex used to avoid gcc warnings. Leave the constants so the text reads big endian. There
// ! seems to be no decent way on UNIX to determine the target endianness at compile time.
// ! Forcing it on the client isn't acceptable.
@@ -921,14 +802,10 @@ enum {
kXMP_MPEG2File = 0x4D503220UL,
/// Public file format constant: 'MP4 ', ISO 14494-12 and -14
kXMP_MPEG4File = 0x4D503420UL,
- /// Public file format constant: 'MXF '
- kXMP_MXFFile = 0x4D584620UL,
/// Public file format constant: 'WMAV', Windows Media Audio and Video
kXMP_WMAVFile = 0x574D4156UL,
/// Public file format constant: 'AIFF'
kXMP_AIFFFile = 0x41494646UL,
- /// Public file format constant: 'RED ', RED file format
- kXMP_REDFile = 0x52454420UL,
/// Public file format constant: 'P2 ', a collection not really a single file
kXMP_P2File = 0x50322020UL,
/// Public file format constant: 'XDCF', a collection not really a single file
@@ -941,10 +818,6 @@ enum {
kXMP_AVCHDFile = 0x41564844UL,
/// Public file format constant: 'SHDV', a collection not really a single file
kXMP_SonyHDVFile = 0x53484456UL,
- /// Public file format constant: 'CNXF', a collection not really a single file
- kXMP_CanonXFFile = 0x434E5846UL,
- /// Public file format constant: 'AVCU', a collection not really a single file
- kXMP_AVCUltraFile = 0x41564355UL,
/// Public file format constant: 'HTML'
kXMP_HTMLFile = 0x48544D4CUL,
@@ -952,8 +825,6 @@ enum {
kXMP_XMLFile = 0x584D4C20UL,
/// Public file format constant: 'text'
kXMP_TextFile = 0x74657874UL,
- /// Public file format constant: 'SVG '
- kXMP_SVGFile = 0x53564720UL,
// -------------------------------
// Adobe application file formats.
@@ -992,14 +863,14 @@ typedef XMP_Uns32 XMP_FileFormat;
// -------------------------------------------------------------------------------------------------
-/// @brief Byte-order masks, do not use directly
+/// Byte-order masks, do not use directly
enum {
kXMP_CharLittleEndianMask = 1,
kXMP_Char16BitMask = 2,
kXMP_Char32BitMask = 4
};
-/// @brief Constants to allow easy testing for 16/32 bit and big/little endian.
+/// Constants to allow easy testing for 16/32 bit and big/little endian.
enum {
/// 8-bit
kXMP_Char8Bit = 0,
@@ -1064,7 +935,7 @@ enum {
/// \brief Constant for an unknown packet length within a file.
#define kXMPFiles_UnknownLength ((XMP_Int32)-1)
-/// @brief XMP packet description
+/// XMP packet description
struct XMP_PacketInfo {
/// Packet offset in the file in bytes, -1 if unknown.
@@ -1090,7 +961,7 @@ struct XMP_PacketInfo {
};
-/// @brief Version of the XMP_PacketInfo type
+/// Version of the XMP_PacketInfo type
enum {
/// Version of the XMP_PacketInfo type
kXMP_PacketInfoVersion = 3
@@ -1098,15 +969,62 @@ enum {
// -------------------------------------------------------------------------------------------------
-/// @brief Option bit flags for \c TXMPFiles::Initialize().
+/// Values for \c XMP_ThumbnailInfo::tnailFormat.
enum {
- /// Ignore non-XMP text that uses an undefined "local" encoding.
- kXMPFiles_IgnoreLocalText = 0x0002,
- /// Combination of flags necessary for server products using XMPFiles.
- kXMPFiles_ServerMode = kXMPFiles_IgnoreLocalText
+ /// The thumbnail data has an unknown format.
+ kXMP_UnknownTNail = 0,
+ /// The thumbnail data is a JPEG stream, presumably compressed.
+ kXMP_JPEGTNail = 1,
+ /// The thumbnail data is a TIFF stream, presumably uncompressed.
+ kXMP_TIFFTNail = 2,
+ /// The thumbnail data is in the format of Photoshop Image Resource 1036.
+ kXMP_PShopTNail = 3
};
-/// @brief Option bit flags for \c TXMPFiles::GetFormatInfo().
+/// Thumbnail descriptor
+struct XMP_ThumbnailInfo {
+
+ /// The format of the containing file.
+ XMP_FileFormat fileFormat;
+ /// Full image size in pixels.
+ XMP_Uns32 fullWidth, fullHeight;
+ /// Thumbnail image size in pixels.
+ XMP_Uns32 tnailWidth, tnailHeight;
+ /// Orientation of full image and thumbnail, as defined by Exif for tag 274.
+
+ XMP_Uns16 fullOrientation, tnailOrientation;
+ /// Raw image data from the host file, valid for life of the owning \c XMPFiles object. Do not modify!
+ const XMP_Uns8 * tnailImage;
+ /// The size in bytes of the thumbnail image data.
+ XMP_Uns32 tnailSize;
+ /// The format of the thumbnail image data.
+ XMP_Uns8 tnailFormat;
+
+ /// Padding to make the struct's size be a multiple 4.
+ XMP_Uns8 pad1, pad2, pad3;
+
+ /// Default constructor.
+ XMP_ThumbnailInfo() : fileFormat(kXMP_UnknownFile), fullWidth(0), fullHeight(0),
+ tnailWidth(0), tnailHeight(0), fullOrientation(0), tnailOrientation(0),
+ tnailImage(0), tnailSize(0), tnailFormat(kXMP_UnknownTNail) {};
+
+};
+
+/// Version of the XMP_ThumbnailInfo type
+enum {
+ /// Version of the XMP_ThumbnailInfo type
+ kXMP_ThumbnailInfoVersion = 1
+};
+
+// -------------------------------------------------------------------------------------------------
+
+/// Option bit flags for \c TXMPFiles::Initialize().
+enum {
+ /// Do not initialize QuickTime, the client will.
+ kXMPFiles_NoQuickTimeInit = 0x0001
+};
+
+/// Option bit flags for \c TXMPFiles::GetFormatInfo().
enum {
/// Can inject first-time XMP into an existing file.
@@ -1130,6 +1048,9 @@ enum {
/// File handler returns raw XMP packet information.
kXMPFiles_ReturnsRawPacket = 0x00000040,
+ /// File handler returns native thumbnail.
+ kXMPFiles_ReturnsTNail = 0x00000080,
+
/// The file handler does the file open and close.
kXMPFiles_HandlerOwnsFile = 0x00000100,
@@ -1143,17 +1064,11 @@ enum {
kXMPFiles_UsesSidecarXMP = 0x00000800,
/// The format is folder oriented, for example the P2 video format.
- kXMPFiles_FolderBasedFormat = 0x00001000,
-
- /// The file Handler is capable of notifying progress notifications
- kXMPFiles_CanNotifyProgress = 0x00002000,
-
- /// The plugin handler is not capable for delay loading
- kXMPFiles_NeedsPreloading = 0x00004000,
+ kXMPFiles_FolderBasedFormat = 0x00001000
};
-/// @brief Option bit flags for \c TXMPFiles::OpenFile().
+/// Option bit flags for \c TXMPFiles::OpenFile().
enum {
/// Open for read-only access.
@@ -1165,10 +1080,10 @@ enum {
/// Only the XMP is wanted, allows space/time optimizations.
kXMPFiles_OpenOnlyXMP = 0x00000004,
- /// Force use of the given handler (format), do not even verify the format.
- kXMPFiles_ForceGivenHandler = 0x00000008,
-
- /// Be strict about only attempting to use the designated file handler, no fallback to other handlers.
+ /// Cache thumbnail if possible, \c TXMPFiles::GetThumbnail() will be called.
+ kXMPFiles_OpenCacheTNail = 0x00000008,
+
+ /// Be strict about locating XMP and reconciling with other forms.
kXMPFiles_OpenStrictly = 0x00000010,
/// Require the use of a smart handler.
@@ -1179,42 +1094,34 @@ enum {
/// Only packet scan files "known" to need scanning.
kXMPFiles_OpenLimitedScanning = 0x00000080,
-
+
/// Attempt to repair a file opened for update, default is to not open (throw an exception).
kXMPFiles_OpenRepairFile = 0x00000100,
- /// When updating a file, spend the effort necessary to optimize file layout.
- kXMPFiles_OptimizeFileLayout = 0x00000200
+ /// Set if calling from background thread.
+ kXMPFiles_OpenInBackground = 0x10000000
};
-/// @brief Option bit flags for \c TXMPFiles::CloseFile().
+// A note about kXMPFiles_OpenInBackground. The XMPFiles handler for .mov files currently uses
+// QuickTime. On Macintosh, calls to Enter/ExitMovies versus Enter/ExitMoviesOnThread must be made.
+// This option is used to signal background use so that the .mov handler can behave appropriately.
+
+/// Option bit flags for \c TXMPFiles::CloseFile().
enum {
/// Write into a temporary file and swap for crash safety.
kXMPFiles_UpdateSafely = 0x0001
};
-
// =================================================================================================
-// Error notification and Exceptions
-// =================================
+// Exception codes
+// ===============
-/// \name Error notification and Exceptions
+/// \name Errors Exception handling
/// @{
///
-/// @details From the beginning through version 5.5, XMP Tookit errors result in throwing an \c XMP_Error
-/// exception. For the most part exceptions were thrown early and thus API calls aborted as soon as
-/// an error was detected. Starting in version 5.5, support has been added for notifications of
-/// errors arising in calls to \c TXMPMeta and \c TXMPFiles functions.
-///
-/// A client can register an error notification callback function for a \c TXMPMeta or \c TXMPFiles
-/// object. This can be done as a global default or individually to each object. The global default
-/// applies to all objects created after it is registered. Within the object there is no difference
-/// between the global default or explicitly registered callback. The callback function returns a
-/// \c bool value indicating if recovery should be attempted (true) or an exception thrown (false).
-/// If no callback is registered, a best effort at recovery and continuation will be made with an
-/// exception thrown if recovery is not possible. More details can be found in the \c TXMPMeta and
-/// \c TXMPFiles documentation.
+/// XMP Tookit errors result in throwing an \c XMP_Error exception. Any exception thrown within the
+/// XMP Toolkit is caught in the toolkit and rethrown as an \c XMP_Error.
///
/// The \c XMP_Error class 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
@@ -1222,93 +1129,7 @@ enum {
///
/// \note 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.
-
-typedef XMP_Uns8 XMP_ErrorSeverity;
-
-/// @brief Severity codes for error notifications
-enum {
- /// Partial recovery and continuation is possible.
- kXMPErrSev_Recoverable = 0,
- /// Recovery is not possible, an exception will be thrown aborting the API call.
- kXMPErrSev_OperationFatal = 1,
- /// Recovery is not possible, an exception will be thrown, the file is corrupt and possibly unusable.
- kXMPErrSev_FileFatal = 2,
- /// Recovery is not possible, an exception will be thrown, the entire process should be aborted.
- kXMPErrSev_ProcessFatal = 3
-};
-
-// -------------------------------------------------------------------------------------------------
-/// @brief The signature of a client-defined callback for TXMPMeta error notifications.
///
-/// @param context A pointer used to carry client-private context.
-///
-/// @param severity The severity of the error, see the \c XMP_ErrorSeverity values.
-///
-/// @param cause A numeric code for the cause of the error, from the XMP_Error exception codes.
-/// Codes used with TXMPMeta error notifications:
-/// \li \c kXMPErr_BadXML - An XML syntax error found during parsing.
-/// \li \c kXMPErr_BadRDF - A syntax or semantic parsing error in the XMP subset of RDF.
-/// \li \c kXMPErr_BadXMP - A semantic XMP data model error.
-/// \li \c kXMPErr_BadValue - An XMP value error, wrong type, out of range, etc.
-/// \li \c kXMPErr_NoMemory - A heap allocation failure.
-///
-/// @param message An explanation of the error, for debugging use only. This should not be displayed
-/// to users in a final product.
-///
-/// @return True if the operation should continue with a best effort attempt at recovery, false if
-/// it should be aborted with an exception thrown from the library back to the original caller.
-/// Recovery is possible only if the severity is kXMPErrSev_Recoverable, an exception will be
-/// thrown on return from the callback in all other cases.
-///
-/// @see \c TXMPMeta::SetDefaultErrorCallback() and \c TXMPMeta::SetErrorCallback()
-
-typedef bool (* XMPMeta_ErrorCallbackProc) ( void* context, XMP_ErrorSeverity severity, XMP_Int32 cause, XMP_StringPtr message );
-
-// -------------------------------------------------------------------------------------------------
-/// @brief The signature of a client-defined callback for TXMPFiles error notifications.
-///
-/// @param context A pointer used to carry client-private context.
-///
-/// @param filePath The path for the file involved in the error.
-///
-/// @param severity The severity of the error, see the \c XMP_ErrorSeverity values.
-///
-/// @param cause A numeric code for the cause of the error, from the XMP_Error exception codes.
-/// Codes used with TXMPFiles error notifications:
-/// \li \c kXMPErr_NoFile - A file does not exist
-/// \li \c kXMPErr_FilePermission - A file exists but cannot be opened
-/// \li \c kXMPErr_FilePathNotAFile - A path exists which is not a file
-/// \li \c dXMPErr_RejectedFileExtension - Any Operation called on rejected file extension
-/// \li \c KXMPErr_NoFileHandler - No suitable handler is found for the file
-/// \li \c kXMPErr_DiskSpace - A file write fails due to lack of disk space
-/// \li \c kXMPErr_ReadError - A file read fails
-/// \li \c kXMPErr_WriteError - A file write fails for some other reason than space
-/// \li \c kXMPErr_BadFileFormat - A file is corrupt or ill-formed
-/// \li \c kXMPErr_BadBlockFormat - A portion of a file is corrupt or ill-formed
-/// \li \c kXMPErr_BadValue - An XMP or non-XMP metadata item has an invalid value
-/// \li \c kXMPErr_NoMemory - A heap allocation failure
-///
-/// @param message An explanation of the error, for debugging use only. This should not be displayed
-/// to users in a final product.
-///
-/// @return True if the operation should continue with a best effort attempt at recovery, false if
-/// it should be aborted with an exception thrown from the library back to the original caller.
-/// Recovery is possible only if the severity is kXMPErrSev_Recoverable, an exception will be
-/// thrown on return from the callback in all other cases.
-///
-/// @see \c TXMPFiles::SetDefaultErrorCallback() and \c TXMPFiles::SetErrorCallback()
-
-typedef bool (* XMPFiles_ErrorCallbackProc) ( void* context, XMP_StringPtr filePath, XMP_ErrorSeverity severity, XMP_Int32 cause, XMP_StringPtr message );
-
-// -------------------------------------------------------------------------------------------------
-/// Internal: The signatures of client-side wrappers for the error notification callbacks.
-
-typedef XMP_Bool (* XMPMeta_ErrorCallbackWrapper) ( XMPMeta_ErrorCallbackProc clientProc, void* context,
- XMP_ErrorSeverity severity, XMP_Int32 cause, XMP_StringPtr message );
-
-typedef XMP_Bool (* XMPFiles_ErrorCallbackWrapper) ( XMPFiles_ErrorCallbackProc clientProc, void* context,
- XMP_StringPtr filePath, XMP_ErrorSeverity severity,
- XMP_Int32 cause, XMP_StringPtr message );
/// XMP Toolkit error, associates an error code with a descriptive error string.
class XMP_Error {
@@ -1320,7 +1141,7 @@ public:
///
/// @param _errMsg The descriptive string, 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.
- XMP_Error ( XMP_Int32 _id, XMP_StringPtr _errMsg ) : id(_id), errMsg(_errMsg), notified(false) {};
+ XMP_Error ( XMP_Int32 _id, XMP_StringPtr _errMsg ) : id(_id), errMsg(_errMsg) {};
/// Retrieves the numeric code from an XMP_Error.
inline XMP_Int32 GetID() const { return id; };
@@ -1328,31 +1149,20 @@ public:
/// Retrieves the descriptive string from an XMP_Error.
inline XMP_StringPtr GetErrMsg() const { return errMsg; };
- /// Retrieves the information whether particular error is notified or not
- inline XMP_Bool IsNotified() const { return notified; }
-
- /// Sets the notification status for an error
- inline void SetNotified() { notified = true; };
-
private:
/// Exception code. See constants \c #kXMPErr_Unknown and following.
XMP_Int32 id;
/// Descriptive string, 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.
XMP_StringPtr errMsg;
- /// Variable to store whether this particular error is notified to user or not
- XMP_Bool notified;
};
-/// @brief XMP_Error exception code constants
+/// Exception code constants
enum {
- // --------------------
- /// Generic error codes.
-
- /// No error
- kXMPErr_NoError = -1,
-
+ // --------------------
+ // Generic error codes.
+
/// Generic unknown error
kXMPErr_Unknown = 0,
/// Generic undefined error
@@ -1385,8 +1195,6 @@ enum {
kXMPErr_UnknownException = 14,
/// Generic out-of-memory error
kXMPErr_NoMemory = 15,
- /// Progress reporting callback requested abort
- kXMPErr_ProgressAbort = 16,
// ------------------------------------
// More specific parameter error codes.
@@ -1401,7 +1209,7 @@ enum {
kXMPErr_BadIndex = 104,
/// Bad iteration position
kXMPErr_BadIterPosition = 105,
- /// XML parsing error (deprecated)
+ /// XML parsing error
kXMPErr_BadParse = 106,
/// Serialization error
kXMPErr_BadSerialize = 107,
@@ -1411,22 +1219,6 @@ enum {
kXMPErr_NoFileHandler = 109,
/// Data too large for JPEG file format
kXMPErr_TooLargeForJPEG = 110,
- /// A file does not exist
- kXMPErr_NoFile = 111,
- /// A file exists but cannot be opened
- kXMPErr_FilePermission = 112,
- /// A file write failed due to lack of disk space
- kXMPErr_DiskSpace = 113,
- /// A file read failed
- kXMPErr_ReadError = 114,
- /// A file write failed for a reason other than lack of disk space
- kXMPErr_WriteError = 115,
- /// A block of a file is ill-formed, e.g. invalid IPTC-IIM in a photo
- kXMPErr_BadBlockFormat = 116,
- /// File Path is not a file
- kXMPErr_FilePathNotAFile = 117,
- /// Rejected File extension
- kXMPErr_RejectedFileExtension = 118,
// -----------------------------------------------
// File format and internal structure error codes.
@@ -1466,7 +1258,7 @@ enum {
/// \name Special purpose callback functions
/// @{
-/// @brief A signed 32-bit integer used as a status result for the output callback routine,
+/// A signed 32-bit integer used as a status result for the output callback routine,
/// \c XMP_TextOutputProc. 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.
@@ -1474,9 +1266,8 @@ enum {
typedef XMP_Int32 XMP_Status;
// -------------------------------------------------------------------------------------------------
-/// @brief The signature of a client-defined callback for text output from XMP Toolkit debugging
-/// operations.
-/// @details The callback is invoked one or more times for each line of output. The end of a line
+/// The signature of a client-defined callback for text output from XMP Toolkit debugging
+/// operations. The callback is invoked one or more times for each line of output. The end of a line
/// is signaled by a '\\n' 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.
///
@@ -1495,7 +1286,7 @@ typedef XMP_Status (* XMP_TextOutputProc) ( void * refCon,
XMP_StringLen bufferSize );
// -------------------------------------------------------------------------------------------------
-/// @brief The signature of a client-defined callback to check for a user request to abort a time-consuming
+/// The signature of a client-defined callback to check for a user request to abort a time-consuming
/// operation within XMPFiles.
///
/// @param arg A pointer to caller-defined data passed from the registration call.
@@ -1504,36 +1295,7 @@ typedef XMP_Status (* XMP_TextOutputProc) ( void * refCon,
///
/// @see \c TXMPFiles::SetAbortProc()
-typedef bool (* XMP_AbortProc) ( void * arg );
-
-// -------------------------------------------------------------------------------------------------
-/// @brief The signature of a client-defined callback for progress report notifications.
-///
-/// @param context A pointer used to carry client-private context.
-///
-/// @param elapsedTime The time in seconds since the progress reporting started.
-///
-/// @param fractionDone A float value estimating the amount of work already done, in the range of
-/// 0.0 to 1.0. A value of 0.0 is given if the amount is not known, this happens if there is no
-/// estimate total for the total work. The units of work are not defined, but should usually be
-/// related to the number of bytes of I/O. This will go backwards if total work estimate changes.
-///
-/// @param secondsToGo A float value estimating the number of seconds left to complete the file
-/// operation. A value of 0.0 is given if the amount is not known, this happens if the amount of
-/// total work is unknown. This can go backwards according to throughput or if work estimate changes.
-///
-/// @return True if the file operation should continue, false if it should be aborted with an
-/// exception being thrown from the XMPFiles library back to the original caller.
-///
-/// @see \c TXMPFiles::SetDefaultProgressCallback() and \c TXMPFiles::SetProgressCallback()
-
-typedef bool (* XMP_ProgressReportProc) ( void * context, float elapsedTime, float fractionDone, float secondsToGo );
-
-// -------------------------------------------------------------------------------------------------
-/// Internal: The signature of a client-side wrapper for the progress report callback.
-
-typedef XMP_Bool (* XMP_ProgressReportWrapper) ( XMP_ProgressReportProc proc, void * context,
- float elapsedTime, float fractionDone, float secondsToGo );
+typedef bool (* XMP_AbortProc) ( void * arg ); // Used by .
/// @}
@@ -1565,5 +1327,4 @@ typedef struct XMP_VersionInfo {
} // extern "C"
#endif
-#include
#endif // __XMP_Const_h__
diff --git a/xmpsdk/include/XMP_Environment.h b/xmpsdk/include/XMP_Environment.h
index 4a88b0b9..bfaa5a83 100644
--- a/xmpsdk/include/XMP_Environment.h
+++ b/xmpsdk/include/XMP_Environment.h
@@ -11,7 +11,7 @@
// =================================================================================================
// =================================================================================================
-// Copyright 2002 Adobe Systems Incorporated
+// 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
@@ -22,10 +22,31 @@
// Determine the Platform
// ======================
-// One of MAC_ENV, WIN_ENV, UNIX_ENV or IOS_ENV must be defined by the client. Since some other code
+// One of MAC_ENV, WIN_ENV, or UNIX_ENV must be defined by the client. Since some other code
// requires these to be defined without values, they are only used here to define XMP-specific
// macros with 0 or 1 values.
+/* 20-Oct-07, ahu: Determine the platform, set the above defines accordingly. */
+
+#if !defined(_FILE_OFFSET_BITS)
+#define _FILE_OFFSET_BITS 64
+#endif
+
+#if defined __CYGWIN32__ && !defined __CYGWIN__
+ /* For backwards compatibility with Cygwin b19 and
+ earlier, we define __CYGWIN__ here, so that
+ we can rely on checking just for that macro. */
+# define __CYGWIN__ __CYGWIN32__
+#endif
+#if defined WIN32 && !defined __CYGWIN__
+# define WIN_ENV 1
+/* Todo: How to correctly recognize a Mac platform? */
+#elif defined macintosh || defined MACOS_CLASSIC || defined MACOS_X_UNIX || defined MACOS_X || defined MACOS
+# define MAC_ENV 1
+#else
+# define UNIX_ENV 1
+#endif
+
// ! Tempting though it might be to have a standard macro for big or little endian, there seems to
// ! be no decent way to do that on our own in UNIX. Forcing it on the client isn't acceptable.
@@ -35,14 +56,13 @@
#error "MAC_ENV must be defined so that \"#if MAC_ENV\" is true"
#endif
- #if defined ( WIN_ENV ) || defined ( UNIX_ENV ) || defined ( IOS_ENV )
- #error "XMP environment error - must define only one of MAC_ENV, WIN_ENV, UNIX_ENV or IOS_ENV"
+ #if defined ( WIN_ENV ) || defined ( UNIX_ENV )
+ #error "XMP environment error - must define only one of MAC_ENV, WIN_ENV, or UNIX_ENV"
#endif
#define XMP_MacBuild 1
#define XMP_WinBuild 0
#define XMP_UNIXBuild 0
- #define XMP_iOSBuild 0
#elif defined ( WIN_ENV )
@@ -50,14 +70,13 @@
#error "WIN_ENV must be defined so that \"#if WIN_ENV\" is true"
#endif
- #if defined ( MAC_ENV ) || defined ( UNIX_ENV ) || defined ( IOS_ENV )
- #error "XMP environment error - must define only one of MAC_ENV, WIN_ENV, UNIX_ENV or IOS_ENV"
+ #if defined ( UNIX_ENV )
+ #error "XMP environment error - must define only one of MAC_ENV, WIN_ENV, or UNIX_ENV"
#endif
#define XMP_MacBuild 0
#define XMP_WinBuild 1
#define XMP_UNIXBuild 0
- #define XMP_iOSBuild 0
#elif defined ( UNIX_ENV )
@@ -65,33 +84,13 @@
#error "UNIX_ENV must be defined so that \"#if UNIX_ENV\" is true"
#endif
- #if defined ( MAC_ENV ) || defined ( WIN_ENV ) || defined ( IOS_ENV )
- #error "XMP environment error - must define only one of MAC_ENV, WIN_ENV, UNIX_ENV or IOS_ENV"
- #endif
-
#define XMP_MacBuild 0
#define XMP_WinBuild 0
#define XMP_UNIXBuild 1
- #define XMP_iOSBuild 0
-
-#elif defined ( IOS_ENV )
-
- #if 0 // ! maybe someday - ! IOS_ENV
- #error "IOS_ENV must be defined so that \"#if IOS_ENV\" is true"
- #endif
-
- #if defined ( MAC_ENV ) || defined ( WIN_ENV ) || defined ( UNIX_ENV )
- #error "XMP environment error - must define only one of MAC_ENV, WIN_ENV, UNIX_ENV or IOS_ENV"
- #endif
-
- #define XMP_MacBuild 0
- #define XMP_WinBuild 0
- #define XMP_UNIXBuild 0
- #define XMP_iOSBuild 1
#else
- #error "XMP environment error - must define one of MAC_ENV, WIN_ENV, UNIX_ENV or IOS_ENV"
+ #error "XMP environment error - must define one of MAC_ENV, WIN_ENV, or UNIX_ENV"
#endif
@@ -101,7 +100,10 @@
#if defined ( DEBUG )
#if defined ( NDEBUG )
- #error "XMP environment error - both DEBUG and NDEBUG are defined"
+ #undef NDEBUG
+ #warning
+ #warning "XMP environment - DEBUG and NDEBUG defined. NDEBUG has been undefined"
+ #warning
#endif
#define XMP_DebugBuild 1
#endif
@@ -118,75 +120,45 @@
#include // The assert macro needs printf.
#endif
-#ifndef DISABLE_SERIALIZED_IMPORT_EXPORT
- #define DISABLE_SERIALIZED_IMPORT_EXPORT 0
-#endif
-
#ifndef XMP_64
- #if _WIN64 || defined(_LP64)
+ #if _WIN64
#define XMP_64 1
#else
#define XMP_64 0
#endif
#endif
+#define UNUSED(x) (void)(x)
+
// =================================================================================================
// Macintosh Specific Settings
// ===========================
-#if (XMP_MacBuild)
- #define XMP_HELPER_DLL_IMPORT __attribute__((visibility("default")))
- #define XMP_HELPER_DLL_EXPORT __attribute__((visibility("default")))
- #define XMP_HELPER_DLL_PRIVATE __attribute__((visibility("hidden")))
- #define APICALL
-#endif
// =================================================================================================
// Windows Specific Settings
// =========================
-#if (XMP_WinBuild)
- #define XMP_HELPER_DLL_IMPORT
- #define XMP_HELPER_DLL_EXPORT
- #define XMP_HELPER_DLL_PRIVATE
- #define APICALL __stdcall
-#endif
// =================================================================================================
// UNIX Specific Settings
// ======================
-#if (XMP_UNIXBuild)
- #define XMP_HELPER_DLL_IMPORT
- #define XMP_HELPER_DLL_EXPORT __attribute__ ((visibility ("default")))
- #define XMP_HELPER_DLL_PRIVATE __attribute__ ((visibility ("hidden")))
- #define APICALL
-#endif
// =================================================================================================
-// IOS Specific Settings
-// ===========================
-#if (XMP_iOSBuild)
- #include
- #if (TARGET_CPU_ARM)
- #define XMP_IOS_ARM 1
- #else
- #define XMP_IOS_ARM 0
- #endif
- #define XMP_HELPER_DLL_IMPORT __attribute__((visibility("default")))
- #define XMP_HELPER_DLL_EXPORT __attribute__((visibility("default")))
- #define XMP_HELPER_DLL_PRIVATE __attribute__((visibility("hidden")))
- #define APICALL
-#endif
-
-// =================================================================================================
-
-#if (XMP_DynamicBuild)
- #define XMP_PUBLIC XMP_HELPER_DLL_EXPORT
- #define XMP_PRIVATE XMP_HELPER_DLL_PRIVATE
-#elif (XMP_StaticBuild)
- #define XMP_PUBLIC
- #define XMP_PRIVATE
-#else
- #define XMP_PUBLIC XMP_HELPER_DLL_IMPORT
- #define XMP_PRIVATE XMP_HELPER_DLL_PRIVATE
-#endif
#endif // __XMP_Environment_h__
+
+/*
+ If you're using Solaris and the Solaris Studio compiler, then you really
+ do need to use -library=stdcxx4 along with these inclusions below
+*/
+#if defined(OS_SOLARIS)
+#include
+#include
+#include
+#include
+#include
+#if defined(__cplusplus)
+#include
+#include
+#endif
+#endif
+
diff --git a/xmpsdk/include/XMP_Version.h b/xmpsdk/include/XMP_Version.h
index 23d16b7c..f8b0ea81 100644
--- a/xmpsdk/include/XMP_Version.h
+++ b/xmpsdk/include/XMP_Version.h
@@ -7,7 +7,7 @@
/*
// =================================================================================================
-// Copyright 2002 Adobe Systems Incorporated
+// Copyright 2002-2008 Adobe Systems Incorporated
// All Rights Reserved.
//
// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms
@@ -33,19 +33,12 @@ versions.
*/
/* ============================================================================================= */
-#define XMPCORE_API_VERSION_MAJOR 5
-#define XMPCORE_API_VERSION_MINOR 6
-#define XMPCORE_API_VERSION_MICRO 0
+#define XMP_API_VERSION_MAJOR 4
+#define XMP_API_VERSION_MINOR 4
+#define XMP_API_VERSION_MICRO 0
-#define XMPCORE_API_VERSION 5.6.0
-#define XMPCORE_API_VERSION_STRING "5.6.0"
-
-#define XMPFILES_API_VERSION_MAJOR 5
-#define XMPFILES_API_VERSION_MINOR 7
-#define XMPFILES_API_VERSION_MICRO 0
-
-#define XMPFILES_API_VERSION 5.7.0
-#define XMPFILES_API_VERSION_STRING "5.7.0"
+#define XMP_API_VERSION 4.4
+#define XMP_API_VERSION_STRING "4.4.0-Exiv2"
/* ============================================================================================= */
diff --git a/xmpsdk/include/client-glue/TXMPIterator.incl_cpp b/xmpsdk/include/client-glue/TXMPIterator.incl_cpp
index 0b39d013..672203e2 100644
--- a/xmpsdk/include/client-glue/TXMPIterator.incl_cpp
+++ b/xmpsdk/include/client-glue/TXMPIterator.incl_cpp
@@ -1,6 +1,6 @@
// =================================================================================================
// ADOBE SYSTEMS INCORPORATED
-// Copyright 2002 Adobe Systems Incorporated
+// 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
@@ -11,7 +11,7 @@
/// \file TXMPIterator.incl_cpp
/// \brief The implementation of the TXMPIterator template class.
-#include "XMP.hpp"
+#include "XMPSDK.hpp"
#include "client-glue/WXMP_Common.hpp"
#include "client-glue/WXMPIterator.hpp"
@@ -79,15 +79,6 @@
// -------------------------------------------------------------------------------------------------
-XMP_MethodIntro(TXMPIterator,void)::
-SetClientString ( void * clientPtr, XMP_StringPtr valuePtr, XMP_StringLen valueLen )
-{
- tStringObj * clientStr = (tStringObj*) clientPtr;
- clientStr->assign ( valuePtr, valueLen );
-}
-
-// -------------------------------------------------------------------------------------------------
-
XMP_CTorDTorIntro(TXMPIterator)::
TXMPIterator ( const TXMPIterator & original ) : iterRef(original.iterRef)
{
@@ -208,7 +199,19 @@ Next ( tStringObj * schemaNS /* = 0 */,
tStringObj * propValue /* = 0 */,
XMP_OptionBits * options /* = 0 */ )
{
- WrapCheckBool ( found, zXMPIterator_Next_1 ( schemaNS, propPath, propValue, options, SetClientString ) );
+ XMP_StringPtr schemaPtr = 0;
+ XMP_StringLen schemaLen = 0;
+ XMP_StringPtr pathPtr = 0;
+ XMP_StringLen pathLen = 0;
+ XMP_StringPtr valuePtr = 0;
+ XMP_StringLen valueLen = 0;
+ WrapCheckBool ( found, zXMPIterator_Next_1 ( &schemaPtr, &schemaLen, &pathPtr, &pathLen, &valuePtr, &valueLen, options ) );
+ if ( found ) {
+ if ( schemaNS != 0 ) schemaNS->assign ( schemaPtr, schemaLen );
+ if ( propPath != 0 ) propPath->assign ( pathPtr, pathLen );
+ if ( propValue != 0 ) propValue->assign ( valuePtr, valueLen );
+ WXMPUtils_UnlockIter_1 ( this->iterRef, 0 );
+ }
return found;
}
diff --git a/xmpsdk/include/client-glue/TXMPMeta.incl_cpp b/xmpsdk/include/client-glue/TXMPMeta.incl_cpp
index 7f67a3a1..0131aa50 100644
--- a/xmpsdk/include/client-glue/TXMPMeta.incl_cpp
+++ b/xmpsdk/include/client-glue/TXMPMeta.incl_cpp
@@ -1,6 +1,6 @@
// =================================================================================================
// ADOBE SYSTEMS INCORPORATED
-// Copyright 2002 Adobe Systems Incorporated
+// Copyright 2002-2008 Adobe Systems Incorporated
// All Rights Reserved
//
// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms
@@ -11,20 +11,10 @@
/// \file TXMPMeta.incl_cpp
/// \brief The implementation of the TXMPMeta template class.
-#include "XMP.hpp"
-
+#include "XMPSDK.hpp"
#include "client-glue/WXMP_Common.hpp"
-
#include "client-glue/WXMPMeta.hpp"
-
-#include "XMPCore/XMPCoreDefines.h"
-#if ENABLE_CPP_DOM_MODEL
- #include "XMPCore/Interfaces/IMetadata.h"
- #include "XMPCore/Interfaces/ICoreObjectFactory.h"
-#endif
-
-
// =================================================================================================
// Implementation Guidelines
// =========================
@@ -50,6 +40,8 @@
// Local utilities
// ===============
+// -------------------------------------------------------------------------------------------------
+
class TOPW_Info {
public:
XMP_TextOutputProc clientProc;
@@ -75,15 +67,6 @@ static XMP_Status TextOutputProcWrapper ( void * refCon,
// Initialization and termination
// ==============================
-XMP_MethodIntro(TXMPMeta,void)::
-SetClientString ( void * clientPtr, XMP_StringPtr valuePtr, XMP_StringLen valueLen )
-{
- tStringObj * clientStr = (tStringObj*) clientPtr;
- clientStr->assign ( valuePtr, valueLen );
-}
-
-// -------------------------------------------------------------------------------------------------
-
XMP_MethodIntro(TXMPMeta,void)::
GetVersionInfo ( XMP_VersionInfo * info )
{
@@ -92,62 +75,18 @@ GetVersionInfo ( XMP_VersionInfo * info )
// -------------------------------------------------------------------------------------------------
-#if XMP_TraceClientCalls
- FILE * xmpClientLog = stderr;
-#endif
-
-#ifndef XMP_TypeCheck
- #if ! XMP_DebugBuild
- #define XMP_TypeCheck(e,msg) /* nothing */
- #else
- #define XMP_TypeCheck(e,msg) if ( ! (e) ) throw XMP_Error ( kXMPErr_AssertFailure, msg );
- #endif
-#endif
-
XMP_MethodIntro(TXMPMeta,bool)::
Initialize()
{
- // Verify critical type sizes.
- XMP_TypeCheck ( (sizeof(XMP_Int8) == 1), "Size wrong for critical type XMP_Int8" );
- XMP_TypeCheck ( (sizeof(XMP_Int16) == 2), "Size wrong for critical type XMP_Int16" );
- XMP_TypeCheck ( (sizeof(XMP_Int32) == 4), "Size wrong for critical type XMP_Int32" );
- XMP_TypeCheck ( (sizeof(XMP_Int64) == 8), "Size wrong for critical type XMP_Int64" );
- XMP_TypeCheck ( (sizeof(XMP_Uns8) == 1), "Size wrong for critical type XMP_Uns8" );
- XMP_TypeCheck ( (sizeof(XMP_Uns16) == 2), "Size wrong for critical type XMP_Uns16" );
- XMP_TypeCheck ( (sizeof(XMP_Uns32) == 4), "Size wrong for critical type XMP_Uns32" );
- XMP_TypeCheck ( (sizeof(XMP_Uns64) == 8), "Size wrong for critical type XMP_Uns64" );
- XMP_TypeCheck ( (sizeof(XMP_Bool) == 1), "Size wrong for critical type XMP_Bool" );
-
- #if XMP_TraceClientCallsToFile
- xmpClientLog = fopen ( "XMPClientLog.txt", "w" );
- if ( xmpClientLog == 0 ) xmpClientLog = stderr;
- #endif
-
WrapCheckBool ( ok, zXMPMeta_Initialize_1() );
-
- #if ENABLE_CPP_DOM_MODEL
- AdobeXMPCore::ICoreObjectFactory::SetupCoreObjectFactory();
- #endif
-
return ok;
-
}
// -------------------------------------------------------------------------------------------------
XMP_MethodIntro(TXMPMeta,void)::
Terminate()
{
-
- #if ENABLE_CPP_DOM_MODEL
- AdobeXMPCore::ICoreObjectFactory::DestroyCoreObjectFactory();
- #endif
-
WrapNoCheckVoid ( zXMPMeta_Terminate_1() );
-
- #if XMP_TraceClientCallsToFile
- if ( xmpClientLog != stderr ) fclose ( xmpClientLog );
- xmpClientLog = stderr;
- #endif
}
// =================================================================================================
@@ -184,6 +123,7 @@ TXMPMeta ( const TXMPMeta & original ) : xmpRef(original.xmpRef)
}
// -------------------------------------------------------------------------------------------------
+
XMP_MethodIntro(TXMPMeta,void)::
operator= ( const TXMPMeta & rhs )
{
@@ -282,13 +222,22 @@ DumpNamespaces ( XMP_TextOutputProc outProc,
// -------------------------------------------------------------------------------------------------
-XMP_MethodIntro(TXMPMeta,bool)::
-RegisterNamespace ( XMP_StringPtr namespaceURI,
- XMP_StringPtr suggestedPrefix,
- tStringObj * registeredPrefix )
+XMP_MethodIntro(TXMPMeta,XMP_Status)::
+DumpAliases ( XMP_TextOutputProc outProc,
+ void * refCon )
{
- WrapCheckBool ( prefixMatch, zXMPMeta_RegisterNamespace_1 ( namespaceURI, suggestedPrefix, registeredPrefix, SetClientString ) );
- return prefixMatch;
+ TOPW_Info info ( outProc, refCon );
+ WrapCheckStatus ( status, zXMPMeta_DumpAliases_1 ( TextOutputProcWrapper, &info ) );
+ return status;
+}
+
+// -------------------------------------------------------------------------------------------------
+
+XMP_MethodIntro(TXMPMeta,void)::
+RegisterNamespace ( XMP_StringPtr namespaceURI,
+ XMP_StringPtr prefix )
+{
+ WrapCheckVoid ( zXMPMeta_RegisterNamespace_1 ( namespaceURI, prefix ) );
}
// -------------------------------------------------------------------------------------------------
@@ -297,7 +246,13 @@ XMP_MethodIntro(TXMPMeta,bool)::
GetNamespacePrefix ( XMP_StringPtr namespaceURI,
tStringObj * namespacePrefix )
{
- WrapCheckBool ( found, zXMPMeta_GetNamespacePrefix_1 ( namespaceURI, namespacePrefix, SetClientString ) );
+ XMP_StringPtr resultPtr = 0;
+ XMP_StringLen resultLen = 0;
+ WrapCheckBool ( found, zXMPMeta_GetNamespacePrefix_1 ( namespaceURI, &resultPtr, &resultLen ) );
+ if ( found ) {
+ if ( namespacePrefix != 0 ) namespacePrefix->assign ( resultPtr, resultLen );
+ WXMPMeta_Unlock_1 ( 0 );
+ }
return found;
}
@@ -307,7 +262,13 @@ XMP_MethodIntro(TXMPMeta,bool)::
GetNamespaceURI ( XMP_StringPtr namespacePrefix,
tStringObj * namespaceURI )
{
- WrapCheckBool ( found, zXMPMeta_GetNamespaceURI_1 ( namespacePrefix, namespaceURI, SetClientString ) );
+ XMP_StringPtr resultPtr = 0;
+ XMP_StringLen resultLen = 0;
+ WrapCheckBool ( found, zXMPMeta_GetNamespaceURI_1 ( namespacePrefix, &resultPtr, &resultLen ) );
+ if ( found ) {
+ if ( namespaceURI != 0 ) namespaceURI->assign ( resultPtr, resultLen );
+ WXMPMeta_Unlock_1 ( 0 );
+ }
return found;
}
@@ -319,6 +280,57 @@ DeleteNamespace ( XMP_StringPtr namespaceURI )
WrapCheckVoid ( zXMPMeta_DeleteNamespace_1 ( namespaceURI ) );
}
+// -------------------------------------------------------------------------------------------------
+
+XMP_MethodIntro(TXMPMeta,void)::
+RegisterAlias ( XMP_StringPtr aliasNS,
+ XMP_StringPtr aliasProp,
+ XMP_StringPtr actualNS,
+ XMP_StringPtr actualProp,
+ XMP_OptionBits arrayForm )
+{
+ WrapCheckVoid ( zXMPMeta_RegisterAlias_1 ( aliasNS, aliasProp, actualNS, actualProp, arrayForm ) );
+}
+
+// -------------------------------------------------------------------------------------------------
+
+XMP_MethodIntro(TXMPMeta,bool)::
+ResolveAlias ( XMP_StringPtr aliasNS,
+ XMP_StringPtr aliasProp,
+ tStringObj * actualNS,
+ tStringObj * actualProp,
+ XMP_OptionBits * arrayForm )
+{
+ XMP_StringPtr nsPtr = 0;
+ XMP_StringLen nsLen = 0;
+ XMP_StringPtr propPtr = 0;
+ XMP_StringLen propLen = 0;
+ WrapCheckBool ( found, zXMPMeta_ResolveAlias_1 ( aliasNS, aliasProp, &nsPtr, &nsLen, &propPtr, &propLen, arrayForm ) );
+ if ( found ) {
+ if ( actualNS != 0 ) actualNS->assign ( nsPtr, nsLen );
+ if ( actualProp != 0 ) actualProp->assign ( propPtr, propLen );
+ WXMPMeta_Unlock_1 ( 0 );
+ }
+ return found;
+}
+
+// -------------------------------------------------------------------------------------------------
+
+XMP_MethodIntro(TXMPMeta,void)::
+DeleteAlias ( XMP_StringPtr aliasNS,
+ XMP_StringPtr aliasProp )
+{
+ WrapCheckVoid ( zXMPMeta_DeleteAlias_1 ( aliasNS, aliasProp ) );
+}
+
+// -------------------------------------------------------------------------------------------------
+
+XMP_MethodIntro(TXMPMeta,void)::
+RegisterStandardAliases ( XMP_StringPtr schemaNS )
+{
+ WrapCheckVoid ( zXMPMeta_RegisterStandardAliases_1 ( schemaNS ) );
+}
+
// =================================================================================================
// Basic property manipulation functions
// =====================================
@@ -329,7 +341,13 @@ GetProperty ( XMP_StringPtr schemaNS,
tStringObj * propValue,
XMP_OptionBits * options ) const
{
- WrapCheckBool ( found, zXMPMeta_GetProperty_1 ( schemaNS, propName, propValue, options, SetClientString ) );
+ XMP_StringPtr resultPtr = 0;
+ XMP_StringLen resultLen = 0;
+ WrapCheckBool ( found, zXMPMeta_GetProperty_1 ( schemaNS, propName, &resultPtr, &resultLen, options ) );
+ if ( found ) {
+ if ( propValue != 0 ) propValue->assign ( resultPtr, resultLen );
+ WXMPMeta_UnlockObject_1 ( this->xmpRef, 0 );
+ }
return found;
}
@@ -342,7 +360,13 @@ GetArrayItem ( XMP_StringPtr schemaNS,
tStringObj * itemValue,
XMP_OptionBits * options ) const
{
- WrapCheckBool ( found, zXMPMeta_GetArrayItem_1 ( schemaNS, arrayName, itemIndex, itemValue, options, SetClientString ) );
+ XMP_StringPtr resultPtr = 0;
+ XMP_StringLen resultLen = 0;
+ WrapCheckBool ( found, zXMPMeta_GetArrayItem_1 ( schemaNS, arrayName, itemIndex, &resultPtr, &resultLen, options ) );
+ if ( found ) {
+ if ( itemValue != 0 ) itemValue->assign ( resultPtr, resultLen );
+ WXMPMeta_UnlockObject_1 ( this->xmpRef, 0 );
+ }
return found;
}
@@ -356,7 +380,13 @@ GetStructField ( XMP_StringPtr schemaNS,
tStringObj * fieldValue,
XMP_OptionBits * options ) const
{
- WrapCheckBool ( found, zXMPMeta_GetStructField_1 ( schemaNS, structName, fieldNS, fieldName, fieldValue, options, SetClientString ) );
+ XMP_StringPtr resultPtr = 0;
+ XMP_StringLen resultLen = 0;
+ WrapCheckBool ( found, zXMPMeta_GetStructField_1 ( schemaNS, structName, fieldNS, fieldName, &resultPtr, &resultLen, options ) );
+ if ( found ) {
+ if ( fieldValue != 0 ) fieldValue->assign ( resultPtr, resultLen );
+ WXMPMeta_UnlockObject_1 ( this->xmpRef, 0 );
+ }
return found;
}
@@ -370,7 +400,13 @@ GetQualifier ( XMP_StringPtr schemaNS,
tStringObj * qualValue,
XMP_OptionBits * options ) const
{
- WrapCheckBool ( found, zXMPMeta_GetQualifier_1 ( schemaNS, propName, qualNS, qualName, qualValue, options, SetClientString ) );
+ XMP_StringPtr resultPtr = 0;
+ XMP_StringLen resultLen = 0;
+ WrapCheckBool ( found, zXMPMeta_GetQualifier_1 ( schemaNS, propName, qualNS, qualName, &resultPtr, &resultLen, options ) );
+ if ( found ) {
+ if ( qualValue != 0 ) qualValue->assign ( resultPtr, resultLen );
+ WXMPMeta_UnlockObject_1 ( this->xmpRef, 0 );
+ }
return found;
} //GetQualifier ()
@@ -595,8 +631,17 @@ GetLocalizedText ( XMP_StringPtr schemaNS,
tStringObj * itemValue,
XMP_OptionBits * options ) const
{
+ XMP_StringPtr langPtr = 0;
+ XMP_StringLen langLen = 0;
+ XMP_StringPtr itemPtr = 0;
+ XMP_StringLen itemLen = 0;
WrapCheckBool ( found, zXMPMeta_GetLocalizedText_1 ( schemaNS, altTextName, genericLang, specificLang,
- actualLang, itemValue, options, SetClientString ) );
+ &langPtr, &langLen, &itemPtr, &itemLen, options ) );
+ if ( found ) {
+ if ( actualLang != 0 ) actualLang->assign ( langPtr, langLen );
+ if ( itemValue != 0 ) itemValue->assign ( itemPtr, itemLen );
+ WXMPMeta_UnlockObject_1 ( this->xmpRef, kXMP_NoOptions );
+ }
return found;
}
@@ -628,17 +673,6 @@ SetLocalizedText ( XMP_StringPtr schemaNS,
// -------------------------------------------------------------------------------------------------
-XMP_MethodIntro(TXMPMeta,void)::
-DeleteLocalizedText ( XMP_StringPtr schemaNS,
- XMP_StringPtr altTextName,
- XMP_StringPtr genericLang,
- XMP_StringPtr specificLang )
-{
- WrapCheckVoid ( zXMPMeta_DeleteLocalizedText_1 ( schemaNS, altTextName, genericLang, specificLang ) );
-}
-
-// -------------------------------------------------------------------------------------------------
-
XMP_MethodIntro(TXMPMeta,bool)::
GetProperty_Bool ( XMP_StringPtr schemaNS,
XMP_StringPtr propName,
@@ -656,10 +690,12 @@ GetProperty_Bool ( XMP_StringPtr schemaNS,
XMP_MethodIntro(TXMPMeta,bool)::
GetProperty_Int ( XMP_StringPtr schemaNS,
XMP_StringPtr propName,
- XMP_Int32 * propValue,
+ long * propValue,
XMP_OptionBits * options ) const
{
- WrapCheckBool ( found, zXMPMeta_GetProperty_Int_1 ( schemaNS, propName, propValue, options ) );
+ XMP_Int32 abiValue;
+ WrapCheckBool ( found, zXMPMeta_GetProperty_Int_1 ( schemaNS, propName, &abiValue, options ) );
+ if ( found && (propValue != 0) ) *propValue = abiValue;
return found;
}
@@ -668,10 +704,12 @@ GetProperty_Int ( XMP_StringPtr schemaNS,
XMP_MethodIntro(TXMPMeta,bool)::
GetProperty_Int64 ( XMP_StringPtr schemaNS,
XMP_StringPtr propName,
- XMP_Int64 * propValue,
+ long long * propValue,
XMP_OptionBits * options ) const
{
- WrapCheckBool ( found, zXMPMeta_GetProperty_Int64_1 ( schemaNS, propName, propValue, options ) );
+ XMP_Int64 abiValue;
+ WrapCheckBool ( found, zXMPMeta_GetProperty_Int64_1 ( schemaNS, propName, &abiValue, options ) );
+ if ( found && (propValue != 0) ) *propValue = abiValue;
return found;
}
@@ -715,7 +753,7 @@ SetProperty_Bool ( XMP_StringPtr schemaNS,
XMP_MethodIntro(TXMPMeta,void)::
SetProperty_Int ( XMP_StringPtr schemaNS,
XMP_StringPtr propName,
- XMP_Int32 propValue,
+ long propValue,
XMP_OptionBits options /* = 0 */ )
{
WrapCheckVoid ( zXMPMeta_SetProperty_Int_1 ( schemaNS, propName, propValue, options ) );
@@ -726,7 +764,7 @@ SetProperty_Int ( XMP_StringPtr schemaNS,
XMP_MethodIntro(TXMPMeta,void)::
SetProperty_Int64 ( XMP_StringPtr schemaNS,
XMP_StringPtr propName,
- XMP_Int64 propValue,
+ long long propValue,
XMP_OptionBits options /* = 0 */ )
{
WrapCheckVoid ( zXMPMeta_SetProperty_Int64_1 ( schemaNS, propName, propValue, options ) );
@@ -767,9 +805,13 @@ GetInternalRef() const
// -------------------------------------------------------------------------------------------------
XMP_MethodIntro(TXMPMeta,void)::
-GetObjectName ( tStringObj * nameStr ) const
+GetObjectName ( tStringObj * name ) const
{
- WrapCheckVoid ( zXMPMeta_GetObjectName_1 ( nameStr, SetClientString ) );
+ XMP_StringPtr namePtr = 0;
+ XMP_StringLen nameLen = 0;
+ WrapCheckVoid ( zXMPMeta_GetObjectName_1 ( &namePtr, &nameLen ) );
+ if ( name != 0 ) name->assign ( namePtr, nameLen );
+ WXMPMeta_UnlockObject_1 ( this->xmpRef, 0 );
}
// -------------------------------------------------------------------------------------------------
@@ -871,7 +913,11 @@ SerializeToBuffer ( tStringObj * pktString,
XMP_StringPtr indent,
XMP_Index baseIndent /* = 0 */ ) const
{
- WrapCheckVoid ( zXMPMeta_SerializeToBuffer_1 ( pktString, options, padding, newline, indent, baseIndent, SetClientString ) );
+ XMP_StringPtr resultPtr = 0;
+ XMP_StringLen resultLen = 0;
+ WrapCheckVoid ( zXMPMeta_SerializeToBuffer_1 ( &resultPtr, &resultLen, options, padding, newline, indent, baseIndent ) );
+ if ( pktString != 0 ) pktString->assign ( resultPtr, resultLen );
+ WXMPMeta_UnlockObject_1 ( this->xmpRef, 0 );
}
// -------------------------------------------------------------------------------------------------
@@ -886,32 +932,4 @@ SerializeToBuffer ( tStringObj * pktString,
// -------------------------------------------------------------------------------------------------
-// -------------------------------------------------------------------------------------------------
-
-XMP_MethodIntro(TXMPMeta,void)::
-SetDefaultErrorCallback ( XMPMeta_ErrorCallbackProc proc,
- void * context /* = 0 */,
- XMP_Uns32 limit /* = 1 */ )
-{
- WrapCheckVoid ( zXMPMeta_SetDefaultErrorCallback_1 ( proc, context, limit ) );
-}
-
-// -------------------------------------------------------------------------------------------------
-
-XMP_MethodIntro(TXMPMeta,void)::
-SetErrorCallback ( XMPMeta_ErrorCallbackProc proc,
- void * context /* = 0 */,
- XMP_Uns32 limit /* = 1 */ )
-{
- WrapCheckVoid ( zXMPMeta_SetErrorCallback_1 ( proc, context, limit ) );
-}
-
-// -------------------------------------------------------------------------------------------------
-
-XMP_MethodIntro(TXMPMeta,void)::
-ResetErrorCallbackLimit ( XMP_Uns32 limit /* = 1 */ )
-{
- WrapCheckVoid ( zXMPMeta_ResetErrorCallbackLimit_1 ( limit ) );
-}
-
// =================================================================================================
diff --git a/xmpsdk/include/client-glue/TXMPUtils.incl_cpp b/xmpsdk/include/client-glue/TXMPUtils.incl_cpp
index 2cd5baee..6898be73 100644
--- a/xmpsdk/include/client-glue/TXMPUtils.incl_cpp
+++ b/xmpsdk/include/client-glue/TXMPUtils.incl_cpp
@@ -1,6 +1,6 @@
// =================================================================================================
// ADOBE SYSTEMS INCORPORATED
-// Copyright 2002 Adobe Systems Incorporated
+// Copyright 2002-2008 Adobe Systems Incorporated
// All Rights Reserved
//
// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms
@@ -11,7 +11,7 @@
/// \file TXMPUtils.incl_cpp
/// \brief The implementation of the TXMPUtils template class.
-#include "XMP.hpp"
+#include "XMPSDK.hpp"
#include "client-glue/WXMP_Common.hpp"
#include "client-glue/WXMPUtils.hpp"
@@ -23,22 +23,17 @@
//
// =================================================================================================
-XMP_MethodIntro(TXMPUtils,void)::
-SetClientString ( void * clientPtr, XMP_StringPtr valuePtr, XMP_StringLen valueLen )
-{
- tStringObj * clientStr = (tStringObj*) clientPtr;
- clientStr->assign ( valuePtr, valueLen );
-}
-
-// -------------------------------------------------------------------------------------------------
-
XMP_MethodIntro(TXMPUtils,void)::
ComposeArrayItemPath ( XMP_StringPtr schemaNS,
XMP_StringPtr arrayName,
XMP_Index itemIndex,
tStringObj * fullPath )
{
- WrapCheckVoid ( zXMPUtils_ComposeArrayItemPath_1 ( schemaNS, arrayName, itemIndex, fullPath, SetClientString ) );
+ XMP_StringPtr pathPtr = 0;
+ XMP_StringLen pathLen = 0;
+ WrapCheckVoid ( zXMPUtils_ComposeArrayItemPath_1 ( schemaNS, arrayName, itemIndex, &pathPtr, &pathLen ) );
+ if ( fullPath != 0 ) fullPath->assign ( pathPtr, pathLen );
+ WXMPUtils_Unlock_1 ( 0 );
}
// -------------------------------------------------------------------------------------------------
@@ -50,7 +45,11 @@ ComposeStructFieldPath ( XMP_StringPtr schemaNS,
XMP_StringPtr fieldName,
tStringObj * fullPath )
{
- WrapCheckVoid ( zXMPUtils_ComposeStructFieldPath_1 ( schemaNS, structName, fieldNS, fieldName, fullPath, SetClientString ) );
+ XMP_StringPtr pathPtr = 0;
+ XMP_StringLen pathLen = 0;
+ WrapCheckVoid ( zXMPUtils_ComposeStructFieldPath_1 ( schemaNS, structName, fieldNS, fieldName, &pathPtr, &pathLen ) );
+ if ( fullPath != 0 ) fullPath->assign ( pathPtr, pathLen );
+ WXMPUtils_Unlock_1 ( 0 );
}
// -------------------------------------------------------------------------------------------------
@@ -62,7 +61,11 @@ ComposeQualifierPath ( XMP_StringPtr schemaNS,
XMP_StringPtr qualName,
tStringObj * fullPath )
{
- WrapCheckVoid ( zXMPUtils_ComposeQualifierPath_1 ( schemaNS, propName, qualNS, qualName, fullPath, SetClientString ) );
+ XMP_StringPtr pathPtr = 0;
+ XMP_StringLen pathLen = 0;
+ WrapCheckVoid ( zXMPUtils_ComposeQualifierPath_1 ( schemaNS, propName, qualNS, qualName, &pathPtr, &pathLen ) );
+ if ( fullPath != 0 ) fullPath->assign ( pathPtr, pathLen );
+ WXMPUtils_Unlock_1 ( 0 );
}
// -------------------------------------------------------------------------------------------------
@@ -73,7 +76,11 @@ ComposeLangSelector ( XMP_StringPtr schemaNS,
XMP_StringPtr langName,
tStringObj * fullPath )
{
- WrapCheckVoid ( zXMPUtils_ComposeLangSelector_1 ( schemaNS, arrayName, langName, fullPath, SetClientString ) );
+ XMP_StringPtr pathPtr = 0;
+ XMP_StringLen pathLen = 0;
+ WrapCheckVoid ( zXMPUtils_ComposeLangSelector_1 ( schemaNS, arrayName, langName, &pathPtr, &pathLen ) );
+ if ( fullPath != 0 ) fullPath->assign ( pathPtr, pathLen );
+ WXMPUtils_Unlock_1 ( 0 );
}
// -------------------------------------------------------------------------------------------------
@@ -97,7 +104,12 @@ ComposeFieldSelector ( XMP_StringPtr schemaNS,
XMP_StringPtr fieldValue,
tStringObj * fullPath )
{
- WrapCheckVoid ( zXMPUtils_ComposeFieldSelector_1 ( schemaNS, arrayName, fieldNS, fieldName, fieldValue, fullPath, SetClientString ) );
+ XMP_StringPtr pathPtr = 0;
+ XMP_StringLen pathLen = 0;
+ WrapCheckVoid ( zXMPUtils_ComposeFieldSelector_1 ( schemaNS, arrayName, fieldNS, fieldName, fieldValue,
+ &pathPtr, &pathLen ) );
+ if ( fullPath != 0 ) fullPath->assign ( pathPtr, pathLen );
+ WXMPUtils_Unlock_1 ( 0 );
}
// -------------------------------------------------------------------------------------------------
@@ -120,7 +132,11 @@ XMP_MethodIntro(TXMPUtils,void)::
ConvertFromBool ( bool binValue,
tStringObj * strValue )
{
- WrapCheckVoid ( zXMPUtils_ConvertFromBool_1 ( binValue, strValue, SetClientString ) );
+ XMP_StringPtr strPtr = 0;
+ XMP_StringLen strLen = 0;
+ WrapCheckVoid ( zXMPUtils_ConvertFromBool_1 ( binValue, &strPtr, &strLen ) );
+ if ( strValue != 0 ) strValue->assign ( strPtr, strLen );
+ WXMPUtils_Unlock_1 ( 0 );
}
// -------------------------------------------------------------------------------------------------
@@ -130,12 +146,11 @@ ConvertFromInt ( long binValue,
XMP_StringPtr format,
tStringObj * strValue )
{
- #if XMP_MacBuild & XMP_64 // This is checked because on Mac 64 bit environment, long is of 64 bit and hence gives a warning during implicit
- // typecasting to XMP_Int32. Now doing it explicitly in that case.
- WrapCheckVoid ( zXMPUtils_ConvertFromInt_1 ( (XMP_Int32)binValue, format, strValue, SetClientString ) );
- #else
- WrapCheckVoid ( zXMPUtils_ConvertFromInt_1 ( binValue, format, strValue, SetClientString ) );
- #endif
+ XMP_StringPtr strPtr = 0;
+ XMP_StringLen strLen = 0;
+ WrapCheckVoid ( zXMPUtils_ConvertFromInt_1 ( binValue, format, &strPtr, &strLen ) );
+ if ( strValue != 0 ) strValue->assign ( strPtr, strLen );
+ WXMPUtils_Unlock_1 ( 0 );
}
// -------------------------------------------------------------------------------------------------
@@ -145,7 +160,11 @@ ConvertFromInt64 ( long long binValue,
XMP_StringPtr format,
tStringObj * strValue )
{
- WrapCheckVoid ( zXMPUtils_ConvertFromInt64_1 ( binValue, format, strValue, SetClientString ) );
+ XMP_StringPtr strPtr = 0;
+ XMP_StringLen strLen = 0;
+ WrapCheckVoid ( zXMPUtils_ConvertFromInt64_1 ( binValue, format, &strPtr, &strLen ) );
+ if ( strValue != 0 ) strValue->assign ( strPtr, strLen );
+ WXMPUtils_Unlock_1 ( 0 );
}
// -------------------------------------------------------------------------------------------------
@@ -155,7 +174,11 @@ ConvertFromFloat ( double binValue,
XMP_StringPtr format,
tStringObj * strValue )
{
- WrapCheckVoid ( zXMPUtils_ConvertFromFloat_1 ( binValue, format, strValue, SetClientString ) );
+ XMP_StringPtr strPtr = 0;
+ XMP_StringLen strLen = 0;
+ WrapCheckVoid ( zXMPUtils_ConvertFromFloat_1 ( binValue, format, &strPtr, &strLen ) );
+ if ( strValue != 0 ) strValue->assign ( strPtr, strLen );
+ WXMPUtils_Unlock_1 ( 0 );
}
// -------------------------------------------------------------------------------------------------
@@ -164,7 +187,11 @@ XMP_MethodIntro(TXMPUtils,void)::
ConvertFromDate ( const XMP_DateTime & binValue,
tStringObj * strValue )
{
- WrapCheckVoid ( zXMPUtils_ConvertFromDate_1 ( binValue, strValue, SetClientString ) );
+ XMP_StringPtr strPtr = 0;
+ XMP_StringLen strLen = 0;
+ WrapCheckVoid ( zXMPUtils_ConvertFromDate_1 ( binValue, &strPtr, &strLen ) );
+ if ( strValue != 0 ) strValue->assign ( strPtr, strLen );
+ WXMPUtils_Unlock_1 ( 0 );
}
// -------------------------------------------------------------------------------------------------
@@ -304,7 +331,11 @@ EncodeToBase64 ( XMP_StringPtr rawStr,
XMP_StringLen rawLen,
tStringObj * encodedStr )
{
- WrapCheckVoid ( zXMPUtils_EncodeToBase64_1 ( rawStr, rawLen, encodedStr, SetClientString ) );
+ XMP_StringPtr encPtr = 0;
+ XMP_StringLen encLen = 0;
+ WrapCheckVoid ( zXMPUtils_EncodeToBase64_1 ( rawStr, rawLen, &encPtr, &encLen ) );
+ if ( encodedStr != 0 ) encodedStr->assign ( encPtr, encLen );
+ WXMPUtils_Unlock_1 ( 0 );
}
// -------------------------------------------------------------------------------------------------
@@ -323,7 +354,11 @@ DecodeFromBase64 ( XMP_StringPtr encodedStr,
XMP_StringLen encodedLen,
tStringObj * rawStr )
{
- WrapCheckVoid ( zXMPUtils_DecodeFromBase64_1 ( encodedStr, encodedLen, rawStr, SetClientString ) );
+ XMP_StringPtr rawPtr = 0;
+ XMP_StringLen rawLen = 0;
+ WrapCheckVoid ( zXMPUtils_DecodeFromBase64_1 ( encodedStr, encodedLen, &rawPtr, &rawLen ) );
+ if ( rawStr != 0 ) rawStr->assign ( rawPtr, rawLen );
+ WXMPUtils_Unlock_1 ( 0 );
}
// -------------------------------------------------------------------------------------------------
@@ -346,7 +381,18 @@ PackageForJPEG ( const TXMPMeta & xmpObj,
tStringObj * extendedXMP,
tStringObj * extendedDigest )
{
- WrapCheckVoid ( zXMPUtils_PackageForJPEG_1 ( xmpObj.GetInternalRef(), standardXMP, extendedXMP, extendedDigest, SetClientString ) );
+ XMP_StringPtr stdStr = 0;
+ XMP_StringLen stdLen = 0;
+ XMP_StringPtr extStr = 0;
+ XMP_StringLen extLen = 0;
+ XMP_StringPtr digestStr = 0;
+ XMP_StringLen digestLen = 0;
+ WrapCheckVoid ( zXMPUtils_PackageForJPEG_1 ( xmpObj.GetInternalRef(),
+ &stdStr, &stdLen, &extStr, &extLen, &digestStr, &digestLen ) );
+ if ( standardXMP != 0 ) standardXMP->assign ( stdStr, stdLen );
+ if ( extendedXMP != 0 ) extendedXMP->assign ( extStr, extLen );
+ if ( extendedDigest != 0 ) extendedDigest->assign ( digestStr, digestLen );
+ WXMPUtils_Unlock_1 ( 0 );
}
// -------------------------------------------------------------------------------------------------
@@ -370,8 +416,12 @@ CatenateArrayItems ( const TXMPMeta & xmpObj,
XMP_OptionBits options,
tStringObj * catedStr )
{
+ XMP_StringPtr catedPtr = 0;
+ XMP_StringLen catedLen = 0;
WrapCheckVoid ( zXMPUtils_CatenateArrayItems_1 ( xmpObj.GetInternalRef(), schemaNS, arrayName,
- separator, quotes, options, catedStr, SetClientString ) );
+ separator, quotes, options, &catedPtr, &catedLen ) );
+ if ( catedStr != 0 ) catedStr->assign ( catedPtr, catedLen );
+ WXMPUtils_Unlock_1 ( 0 );
}
// -------------------------------------------------------------------------------------------------
@@ -401,17 +451,6 @@ SeparateArrayItems ( TXMPMeta * xmpObj,
// -------------------------------------------------------------------------------------------------
-XMP_MethodIntro(TXMPUtils,void)::
-ApplyTemplate ( TXMPMeta * workingXMP,
- const TXMPMeta & templateXMP,
- XMP_OptionBits actions )
-{
- if ( workingXMP == 0 ) throw XMP_Error ( kXMPErr_BadParam, "Null working SXMPMeta pointer" );
- WrapCheckVoid ( zXMPUtils_ApplyTemplate_1 ( workingXMP->GetInternalRef(), templateXMP.GetInternalRef(), actions ) );
-}
-
-// -------------------------------------------------------------------------------------------------
-
XMP_MethodIntro(TXMPUtils,void)::
RemoveProperties ( TXMPMeta * xmpObj,
XMP_StringPtr schemaNS /* = 0 */,
@@ -424,6 +463,15 @@ RemoveProperties ( TXMPMeta * xmpObj,
// -------------------------------------------------------------------------------------------------
+XMP_MethodIntro(TXMPUtils,void)::
+AppendProperties ( const TXMPMeta & source,
+ TXMPMeta * dest,
+ XMP_OptionBits options /* = 0 */ )
+{
+ if ( dest == 0 ) throw XMP_Error ( kXMPErr_BadParam, "Null output SXMPMeta pointer" );
+ WrapCheckVoid ( zXMPUtils_AppendProperties_1 ( source.GetInternalRef(), dest->GetInternalRef(), options ) );
+}
+
// -------------------------------------------------------------------------------------------------
XMP_MethodIntro(TXMPUtils,void)::
diff --git a/xmpsdk/include/client-glue/WXMPFiles.hpp b/xmpsdk/include/client-glue/WXMPFiles.hpp
index 2f8bb9ab..cdc510ce 100644
--- a/xmpsdk/include/client-glue/WXMPFiles.hpp
+++ b/xmpsdk/include/client-glue/WXMPFiles.hpp
@@ -3,7 +3,7 @@
// =================================================================================================
// ADOBE SYSTEMS INCORPORATED
-// Copyright 2002 Adobe Systems Incorporated
+// 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
@@ -12,16 +12,12 @@
#include "client-glue/WXMP_Common.hpp"
-#if XMP_StaticBuild // ! Client XMP_IO objects can only be used in static builds.
- #include "XMP_IO.hpp"
-#endif
-
#if __cplusplus
extern "C" {
#endif
// =================================================================================================
-/// \file WXMPFiles.hpp
+/// \file WXMPFiles.h
/// \brief High level support to access metadata in files of interest to Adobe applications.
///
/// This header ...
@@ -36,42 +32,16 @@ extern "C" {
PropagateException ( wResult ); \
XMPFilesRef result = XMPFilesRef(wResult.ptrResult)
-static XMP_Bool WrapProgressReport ( XMP_ProgressReportProc proc, void * context,
- float elapsedTime, float fractionDone, float secondsToGo )
-{
- bool ok;
- try {
- ok = (*proc) ( context, elapsedTime, fractionDone, secondsToGo );
- } catch ( ... ) {
- ok = false;
- }
- return ConvertBoolToXMP_Bool( ok );
-}
-
-// =================================================================================================
-
-static XMP_Bool WrapFilesErrorNotify ( XMPFiles_ErrorCallbackProc proc, void * context,
- XMP_StringPtr filePath, XMP_ErrorSeverity severity, XMP_Int32 cause, XMP_StringPtr message )
-{
- bool ok;
- try {
- ok = (*proc) ( context, filePath, severity, cause, message );
- } catch ( ... ) {
- ok = false;
- }
- return ConvertBoolToXMP_Bool( ok );
-}
-
// =================================================================================================
#define zXMPFiles_GetVersionInfo_1(versionInfo) \
WXMPFiles_GetVersionInfo_1 ( versionInfo /* no wResult */ )
-#define zXMPFiles_Initialize_1(options) \
- WXMPFiles_Initialize_1 ( options, &wResult )
+#define zXMPFiles_Initialize_1() \
+ WXMPFiles_Initialize_1 ( &wResult )
-#define zXMPFiles_Initialize_2(options,pluginFolder,plugins) \
- WXMPFiles_Initialize_2 ( options, pluginFolder, plugins, &wResult )
+#define zXMPFiles_Initialize_2(options) \
+ WXMPFiles_Initialize_2 ( options, &wResult )
#define zXMPFiles_Terminate_1() \
WXMPFiles_Terminate_1 ( /* no wResult */ )
@@ -88,72 +58,46 @@ static XMP_Bool WrapFilesErrorNotify ( XMPFiles_ErrorCallbackProc proc, void * c
#define zXMPFiles_CheckPackageFormat_1(folderPath) \
WXMPFiles_CheckPackageFormat_1 ( folderPath, &wResult )
-#define zXMPFiles_GetFileModDate_1(filePath,modDate,format,options) \
- WXMPFiles_GetFileModDate_1 ( filePath, modDate, format, options, &wResult )
-
-#define zXMPFiles_GetAssociatedResources_1( filePath, resourceList, format, options, SetClientStringVector ) \
- WXMPFiles_GetAssociatedResources_1 ( filePath, resourceList, format, options, SetClientStringVector, &wResult )
-
-#define zXMPFiles_IsMetadataWritable_1( filePath, writable, format, options ) \
- WXMPFiles_IsMetadataWritable_1 ( filePath, writable, format, options, &wResult )
-
#define zXMPFiles_OpenFile_1(filePath,format,openFlags) \
WXMPFiles_OpenFile_1 ( this->xmpFilesRef, filePath, format, openFlags, &wResult )
-
-#if XMP_StaticBuild // ! Client XMP_IO objects can only be used in static builds.
-#define zXMPFiles_OpenFile_2(clientIO,format,openFlags) \
- WXMPFiles_OpenFile_2 ( this->xmpFilesRef, clientIO, format, openFlags, &wResult )
-#endif
-
+
#define zXMPFiles_CloseFile_1(closeFlags) \
WXMPFiles_CloseFile_1 ( this->xmpFilesRef, closeFlags, &wResult )
-
-#define zXMPFiles_GetFileInfo_1(clientPath,openFlags,format,handlerFlags,SetClientString) \
- WXMPFiles_GetFileInfo_1 ( this->xmpFilesRef, clientPath, openFlags, format, handlerFlags, SetClientString, &wResult )
-
+
+#define zXMPFiles_GetFileInfo_1(filePath,filePathLen,openFlags,format,handlerFlags) \
+ WXMPFiles_GetFileInfo_1 ( this->xmpFilesRef, filePath, filePathLen, openFlags, format, handlerFlags, &wResult )
+
#define zXMPFiles_SetAbortProc_1(abortProc,abortArg) \
WXMPFiles_SetAbortProc_1 ( this->xmpFilesRef, abortProc, abortArg, &wResult )
-
-#define zXMPFiles_GetXMP_1(xmpRef,clientPacket,packetInfo,SetClientString) \
- WXMPFiles_GetXMP_1 ( this->xmpFilesRef, xmpRef, clientPacket, packetInfo, SetClientString, &wResult )
-
+
+#define zXMPFiles_GetXMP_1(xmpRef,xmpPacket,xmpPacketLen,packetInfo) \
+ WXMPFiles_GetXMP_1 ( this->xmpFilesRef, xmpRef, xmpPacket, xmpPacketLen, packetInfo, &wResult )
+
+#define zXMPFiles_GetThumbnail_1(tnailInfo) \
+ WXMPFiles_GetThumbnail_1 ( this->xmpFilesRef, tnailInfo, &wResult )
+
#define zXMPFiles_PutXMP_1(xmpRef,xmpPacket,xmpPacketLen) \
WXMPFiles_PutXMP_1 ( this->xmpFilesRef, xmpRef, xmpPacket, xmpPacketLen, &wResult )
-
+
#define zXMPFiles_CanPutXMP_1(xmpRef,xmpPacket,xmpPacketLen) \
WXMPFiles_CanPutXMP_1 ( this->xmpFilesRef, xmpRef, xmpPacket, xmpPacketLen, &wResult )
-#define zXMPFiles_SetDefaultProgressCallback_1(proc,context,interval,sendStartStop) \
- WXMPFiles_SetDefaultProgressCallback_1 ( WrapProgressReport, proc, context, interval, sendStartStop, &wResult )
-
-#define zXMPFiles_SetProgressCallback_1(proc,context,interval,sendStartStop) \
- WXMPFiles_SetProgressCallback_1 ( this->xmpFilesRef, WrapProgressReport, proc, context, interval, sendStartStop, &wResult )
-
-#define zXMPFiles_SetDefaultErrorCallback_1(proc,context,limit) \
- WXMPFiles_SetDefaultErrorCallback_1 ( WrapFilesErrorNotify, proc, context, limit, &wResult )
-
-#define zXMPFiles_SetErrorCallback_1(proc,context,limit) \
- WXMPFiles_SetErrorCallback_1 ( this->xmpFilesRef, WrapFilesErrorNotify, proc, context, limit, &wResult )
-
-#define zXMPFiles_ResetErrorCallbackLimit_1(limit) \
- WXMPFiles_ResetErrorCallbackLimit_1 ( this->xmpFilesRef, limit, &wResult )
-
// =================================================================================================
extern void WXMPFiles_GetVersionInfo_1 ( XMP_VersionInfo * versionInfo );
-extern void WXMPFiles_Initialize_1 ( XMP_OptionBits options,
- WXMP_Result * result );
+extern void WXMPFiles_Initialize_1 ( WXMP_Result * result );
-extern void WXMPFiles_Initialize_2 ( XMP_OptionBits options,
- const char* pluginFolder,
- const char* plugins,
- WXMP_Result * result );
+extern void WXMPFiles_Initialize_2 ( XMP_OptionBits options, WXMP_Result * result );
extern void WXMPFiles_Terminate_1();
extern void WXMPFiles_CTor_1 ( WXMP_Result * result );
+extern void WXMPFiles_UnlockLib_1();
+
+extern void WXMPFiles_UnlockObj_1 ( XMPFilesRef xmpFilesRef );
+
extern void WXMPFiles_IncrementRefCount_1 ( XMPFilesRef xmpFilesRef );
extern void WXMPFiles_DecrementRefCount_1 ( XMPFilesRef xmpFilesRef );
@@ -168,110 +112,52 @@ extern void WXMPFiles_CheckFileFormat_1 ( XMP_StringPtr filePath,
extern void WXMPFiles_CheckPackageFormat_1 ( XMP_StringPtr folderPath,
WXMP_Result * result );
-extern void WXMPFiles_GetFileModDate_1 ( XMP_StringPtr filePath,
- XMP_DateTime * modDate,
- XMP_FileFormat * format, // ! Can be null.
- XMP_OptionBits options,
- WXMP_Result * result );
-
-
-extern void WXMPFiles_GetAssociatedResources_1 ( XMP_StringPtr filePath,
- void * resourceList,
- XMP_FileFormat format,
- XMP_OptionBits options,
- SetClientStringVectorProc SetClientStringVector,
- WXMP_Result * result );
-
-extern void WXMPFiles_IsMetadataWritable_1 ( XMP_StringPtr filePath,
- XMP_Bool * writable,
- XMP_FileFormat format,
- XMP_OptionBits options,
- WXMP_Result * result );
-
extern void WXMPFiles_OpenFile_1 ( XMPFilesRef xmpFilesRef,
XMP_StringPtr filePath,
XMP_FileFormat format,
XMP_OptionBits openFlags,
WXMP_Result * result );
-
-#if XMP_StaticBuild // ! Client XMP_IO objects can only be used in static builds.
-extern void WXMPFiles_OpenFile_2 ( XMPFilesRef xmpFilesRef,
- XMP_IO * clientIO,
- XMP_FileFormat format,
- XMP_OptionBits openFlags,
- WXMP_Result * result );
-#endif
-
+
extern void WXMPFiles_CloseFile_1 ( XMPFilesRef xmpFilesRef,
XMP_OptionBits closeFlags,
WXMP_Result * result );
-
+
extern void WXMPFiles_GetFileInfo_1 ( XMPFilesRef xmpFilesRef,
- void * clientPath,
+ XMP_StringPtr * filePath,
+ XMP_StringLen * filePathLen,
XMP_OptionBits * openFlags, // ! Can be null.
XMP_FileFormat * format, // ! Can be null.
XMP_OptionBits * handlerFlags, // ! Can be null.
- SetClientStringProc SetClientString,
WXMP_Result * result );
-
+
extern void WXMPFiles_SetAbortProc_1 ( XMPFilesRef xmpFilesRef,
XMP_AbortProc abortProc,
void * abortArg,
WXMP_Result * result );
-
+
extern void WXMPFiles_GetXMP_1 ( XMPFilesRef xmpFilesRef,
XMPMetaRef xmpRef, // ! Can be null.
- void * clientPacket,
+ XMP_StringPtr * xmpPacket,
+ XMP_StringLen * xmpPacketLen,
XMP_PacketInfo * packetInfo, // ! Can be null.
- SetClientStringProc SetClientString,
WXMP_Result * result );
-
+
+extern void WXMPFiles_GetThumbnail_1 ( XMPFilesRef xmpFilesRef,
+ XMP_ThumbnailInfo * tnailInfo, // ! Can be null.
+ WXMP_Result * result );
+
extern void WXMPFiles_PutXMP_1 ( XMPFilesRef xmpFilesRef,
XMPMetaRef xmpRef, // ! Only one of the XMP object or packet are passed.
XMP_StringPtr xmpPacket,
XMP_StringLen xmpPacketLen,
WXMP_Result * result );
-
+
extern void WXMPFiles_CanPutXMP_1 ( XMPFilesRef xmpFilesRef,
XMPMetaRef xmpRef, // ! Only one of the XMP object or packet are passed.
XMP_StringPtr xmpPacket,
XMP_StringLen xmpPacketLen,
WXMP_Result * result );
-extern void WXMPFiles_SetDefaultProgressCallback_1 ( XMP_ProgressReportWrapper wrapperproc,
- XMP_ProgressReportProc clientProc,
- void * context,
- float interval,
- XMP_Bool sendStartStop,
- WXMP_Result * result );
-
-extern void WXMPFiles_SetProgressCallback_1 ( XMPFilesRef xmpFilesRef,
- XMP_ProgressReportWrapper wrapperproc,
- XMP_ProgressReportProc clientProc,
- void * context,
- float interval,
- XMP_Bool sendStartStop,
- WXMP_Result * result );
-
-// -------------------------------------------------------------------------------------------------
-
-extern void WXMPFiles_SetDefaultErrorCallback_1 ( XMPFiles_ErrorCallbackWrapper wrapperProc,
- XMPFiles_ErrorCallbackProc clientProc,
- void * context,
- XMP_Uns32 limit,
- WXMP_Result * wResult );
-
-extern void WXMPFiles_SetErrorCallback_1 ( XMPFilesRef xmpRef,
- XMPFiles_ErrorCallbackWrapper wrapperProc,
- XMPFiles_ErrorCallbackProc clientProc,
- void * context,
- XMP_Uns32 limit,
- WXMP_Result * wResult );
-
-extern void WXMPFiles_ResetErrorCallbackLimit_1 ( XMPFilesRef xmpRef,
- XMP_Uns32 limit,
- WXMP_Result * wResult );
-
// =================================================================================================
#if __cplusplus
diff --git a/xmpsdk/include/client-glue/WXMPIterator.hpp b/xmpsdk/include/client-glue/WXMPIterator.hpp
index e40a1d46..c5e9e26d 100644
--- a/xmpsdk/include/client-glue/WXMPIterator.hpp
+++ b/xmpsdk/include/client-glue/WXMPIterator.hpp
@@ -2,7 +2,7 @@
#define __WXMPIterator_hpp__ 1
// =================================================================================================
-// Copyright 2002 Adobe Systems Incorporated
+// 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
@@ -24,8 +24,8 @@ extern "C" {
WXMPIterator_TableCTor_1 ( schemaNS, propName, options, &wResult );
-#define zXMPIterator_Next_1(schemaNS,propPath,propValue,options,SetClientString) \
- WXMPIterator_Next_1 ( this->iterRef, schemaNS, propPath, propValue, options, SetClientString, &wResult );
+#define zXMPIterator_Next_1(schemaNS,nsSize,propPath,pathSize,propValue,valueSize,options) \
+ WXMPIterator_Next_1 ( this->iterRef, schemaNS, nsSize, propPath, pathSize, propValue, valueSize, options, &wResult );
#define zXMPIterator_Skip_1(options) \
WXMPIterator_Skip_1 ( this->iterRef, options, &wResult );
@@ -33,38 +33,47 @@ extern "C" {
// -------------------------------------------------------------------------------------------------
extern void
-XMP_PUBLIC WXMPIterator_PropCTor_1 ( XMPMetaRef xmpRef,
+WXMPIterator_PropCTor_1 ( XMPMetaRef xmpRef,
XMP_StringPtr schemaNS,
XMP_StringPtr propName,
XMP_OptionBits options,
WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPIterator_TableCTor_1 ( XMP_StringPtr schemaNS,
+WXMPIterator_TableCTor_1 ( XMP_StringPtr schemaNS,
XMP_StringPtr propName,
XMP_OptionBits options,
WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPIterator_IncrementRefCount_1 ( XMPIteratorRef iterRef );
+WXMPIterator_IncrementRefCount_1 ( XMPIteratorRef iterRef );
extern void
-XMP_PUBLIC WXMPIterator_DecrementRefCount_1 ( XMPIteratorRef iterRef );
+WXMPIterator_DecrementRefCount_1 ( XMPIteratorRef iterRef );
extern void
-XMP_PUBLIC WXMPIterator_Next_1 ( XMPIteratorRef iterRef,
- void * schemaNS,
- void * propPath,
- void * propValue,
+WXMPIterator_Unlock_1 ( XMP_OptionBits options );
+
+extern void
+WXMPIterator_Next_1 ( XMPIteratorRef iterRef,
+ XMP_StringPtr * schemaNS,
+ XMP_StringLen * nsSize,
+ XMP_StringPtr * propPath,
+ XMP_StringLen * pathSize,
+ XMP_StringPtr * propValue,
+ XMP_StringLen * valueSize,
XMP_OptionBits * options,
- SetClientStringProc SetClientString,
WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPIterator_Skip_1 ( XMPIteratorRef iterRef,
+WXMPIterator_Skip_1 ( XMPIteratorRef iterRef,
XMP_OptionBits options,
WXMP_Result * wResult );
+extern void
+WXMPUtils_UnlockIter_1 ( XMPIteratorRef iterRef,
+ XMP_OptionBits options );
+
// =================================================================================================
#if __cplusplus
diff --git a/xmpsdk/include/client-glue/WXMPMeta.hpp b/xmpsdk/include/client-glue/WXMPMeta.hpp
index af5a11e8..ca943742 100644
--- a/xmpsdk/include/client-glue/WXMPMeta.hpp
+++ b/xmpsdk/include/client-glue/WXMPMeta.hpp
@@ -2,7 +2,7 @@
#define __WXMPMeta_hpp__ 1
// =================================================================================================
-// Copyright 2002 Adobe Systems Incorporated
+// Copyright 2002-2008 Adobe Systems Incorporated
// All Rights Reserved.
//
// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms
@@ -16,21 +16,6 @@ extern "C" {
#endif
// =================================================================================================
-
-static XMP_Bool WrapErrorNotify ( XMPMeta_ErrorCallbackProc proc, void * context,
- XMP_ErrorSeverity severity, XMP_Int32 cause, XMP_StringPtr message )
-{
- bool ok;
- try {
- ok = (*proc) ( context, severity, cause, message );
- } catch ( ... ) {
- ok = false;
- }
- return ConvertBoolToXMP_Bool( ok );
-}
-
-// =================================================================================================
-
#define zXMPMeta_GetVersionInfo_1(info) \
WXMPMeta_GetVersionInfo_1 ( info /* no wResult */ )
@@ -51,34 +36,44 @@ static XMP_Bool WrapErrorNotify ( XMPMeta_ErrorCallbackProc proc, void * context
#define zXMPMeta_DumpNamespaces_1(outProc,refCon) \
WXMPMeta_DumpNamespaces_1 ( outProc, refCon, &wResult )
-#define zXMPMeta_Use_CPP_DOM_APIs_1(useNewCoreAPIs) \
- WXMPMeta_Use_CPP_DOM_APIs_1( useNewCoreAPIs, &wResult )
-#define zXMPMeta_RegisterNamespace_1(namespaceURI,suggestedPrefix,actualPrefix,SetClientString) \
- WXMPMeta_RegisterNamespace_1 ( namespaceURI, suggestedPrefix, actualPrefix, SetClientString, &wResult )
+#define zXMPMeta_DumpAliases_1(outProc,refCon) \
+ WXMPMeta_DumpAliases_1 ( outProc, refCon, &wResult )
-#define zXMPMeta_GetNamespacePrefix_1(namespaceURI,namespacePrefix,SetClientString) \
- WXMPMeta_GetNamespacePrefix_1 ( namespaceURI, namespacePrefix, SetClientString, &wResult )
+#define zXMPMeta_RegisterNamespace_1(namespaceURI,prefix) \
+ WXMPMeta_RegisterNamespace_1 ( namespaceURI, prefix, &wResult )
-#define zXMPMeta_GetNamespaceURI_1(namespacePrefix,namespaceURI,SetClientString) \
- WXMPMeta_GetNamespaceURI_1 ( namespacePrefix, namespaceURI, SetClientString, &wResult )
+#define zXMPMeta_GetNamespacePrefix_1(namespaceURI,namespacePrefix,prefixSize) \
+ WXMPMeta_GetNamespacePrefix_1 ( namespaceURI, namespacePrefix, prefixSize, &wResult )
+
+#define zXMPMeta_GetNamespaceURI_1(namespacePrefix,namespaceURI,uriSize) \
+ WXMPMeta_GetNamespaceURI_1 ( namespacePrefix, namespaceURI, uriSize, &wResult )
#define zXMPMeta_DeleteNamespace_1(namespaceURI) \
WXMPMeta_DeleteNamespace_1 ( namespaceURI, &wResult )
-#define zXMPMeta_GetIXMPMetadata_1() \
- WXMPMeta_GetIXMPMetadata_1( this->xmpRef, &wResult )
+#define zXMPMeta_RegisterAlias_1(aliasNS,aliasProp,actualNS,actualProp,arrayForm) \
+ WXMPMeta_RegisterAlias_1 ( aliasNS, aliasProp, actualNS, actualProp, arrayForm, &wResult )
-#define zXMPMeta_GetProperty_1(schemaNS,propName,propValue,options,SetClientString) \
- WXMPMeta_GetProperty_1 ( this->xmpRef, schemaNS, propName, propValue, options, SetClientString, &wResult )
+#define zXMPMeta_ResolveAlias_1(aliasNS,aliasProp,actualNS,nsSize,actualProp,propSize,arrayForm) \
+ WXMPMeta_ResolveAlias_1 ( aliasNS, aliasProp, actualNS, nsSize, actualProp, propSize, arrayForm, &wResult )
-#define zXMPMeta_GetArrayItem_1(schemaNS,arrayName,itemIndex,itemValue,options,SetClientString) \
- WXMPMeta_GetArrayItem_1 ( this->xmpRef, schemaNS, arrayName, itemIndex, itemValue, options, SetClientString, &wResult )
+#define zXMPMeta_DeleteAlias_1(aliasNS,aliasProp) \
+ WXMPMeta_DeleteAlias_1 ( aliasNS, aliasProp, &wResult )
-#define zXMPMeta_GetStructField_1(schemaNS,structName,fieldNS,fieldName,fieldValue,options,SetClientString) \
- WXMPMeta_GetStructField_1 ( this->xmpRef, schemaNS, structName, fieldNS, fieldName, fieldValue, options, SetClientString, &wResult )
+#define zXMPMeta_RegisterStandardAliases_1(schemaNS) \
+ WXMPMeta_RegisterStandardAliases_1 ( schemaNS, &wResult )
-#define zXMPMeta_GetQualifier_1(schemaNS,propName,qualNS,qualName,qualValue,options,SetClientString) \
- WXMPMeta_GetQualifier_1 ( this->xmpRef, schemaNS, propName, qualNS, qualName, qualValue, options, SetClientString, &wResult )
+#define zXMPMeta_GetProperty_1(schemaNS,propName,propValue,valueSize,options) \
+ WXMPMeta_GetProperty_1 ( this->xmpRef, schemaNS, propName, propValue, valueSize, options, &wResult )
+
+#define zXMPMeta_GetArrayItem_1(schemaNS,arrayName,itemIndex,itemValue,valueSize,options) \
+ WXMPMeta_GetArrayItem_1 ( this->xmpRef, schemaNS, arrayName, itemIndex, itemValue, valueSize, options, &wResult )
+
+#define zXMPMeta_GetStructField_1(schemaNS,structName,fieldNS,fieldName,fieldValue,valueSize,options) \
+ WXMPMeta_GetStructField_1 ( this->xmpRef, schemaNS, structName, fieldNS, fieldName, fieldValue, valueSize, options, &wResult )
+
+#define zXMPMeta_GetQualifier_1(schemaNS,propName,qualNS,qualName,qualValue,valueSize,options) \
+ WXMPMeta_GetQualifier_1 ( this->xmpRef, schemaNS, propName, qualNS, qualName, qualValue, valueSize, options, &wResult )
#define zXMPMeta_SetProperty_1(schemaNS,propName,propValue,options) \
WXMPMeta_SetProperty_1 ( this->xmpRef, schemaNS, propName, propValue, options, &wResult )
@@ -119,14 +114,12 @@ static XMP_Bool WrapErrorNotify ( XMPMeta_ErrorCallbackProc proc, void * context
#define zXMPMeta_DoesQualifierExist_1(schemaNS,propName,qualNS,qualName) \
WXMPMeta_DoesQualifierExist_1 ( this->xmpRef, schemaNS, propName, qualNS, qualName, &wResult )
-#define zXMPMeta_GetLocalizedText_1(schemaNS,altTextName,genericLang,specificLang,clientLang,clientValue,options,SetClientString) \
- WXMPMeta_GetLocalizedText_1 ( this->xmpRef, schemaNS, altTextName, genericLang, specificLang, clientLang, clientValue, options, SetClientString, &wResult )
+#define zXMPMeta_GetLocalizedText_1(schemaNS,altTextName,genericLang,specificLang,actualLang,langSize,itemValue,valueSize,options) \
+ WXMPMeta_GetLocalizedText_1 ( this->xmpRef, schemaNS, altTextName, genericLang, specificLang, actualLang, langSize, itemValue, valueSize, options, &wResult )
#define zXMPMeta_SetLocalizedText_1(schemaNS,altTextName,genericLang,specificLang,itemValue,options) \
WXMPMeta_SetLocalizedText_1 ( this->xmpRef, schemaNS, altTextName, genericLang, specificLang, itemValue, options, &wResult )
-#define zXMPMeta_DeleteLocalizedText_1(schemaNS,altTextName,genericLang,specificLang) \
- WXMPMeta_DeleteLocalizedText_1 ( this->xmpRef, schemaNS, altTextName, genericLang, specificLang, &wResult )
#define zXMPMeta_GetProperty_Bool_1(schemaNS,propName,propValue,options) \
WXMPMeta_GetProperty_Bool_1 ( this->xmpRef, schemaNS, propName, propValue, options, &wResult )
@@ -157,8 +150,8 @@ static XMP_Bool WrapErrorNotify ( XMPMeta_ErrorCallbackProc proc, void * context
#define zXMPMeta_SetProperty_Date_1(schemaNS,propName,propValue,options) \
WXMPMeta_SetProperty_Date_1 ( this->xmpRef, schemaNS, propName, propValue, options, &wResult )
-#define zXMPMeta_GetObjectName_1(objName,SetClientString) \
- WXMPMeta_GetObjectName_1 ( this->xmpRef, objName, SetClientString, &wResult )
+#define zXMPMeta_GetObjectName_1(namePtr,nameLen) \
+ WXMPMeta_GetObjectName_1 ( this->xmpRef, namePtr, nameLen, &wResult )
#define zXMPMeta_SetObjectName_1(name) \
WXMPMeta_SetObjectName_1 ( this->xmpRef, name, &wResult )
@@ -187,136 +180,159 @@ static XMP_Bool WrapErrorNotify ( XMPMeta_ErrorCallbackProc proc, void * context
#define zXMPMeta_ParseFromBuffer_1(buffer,bufferSize,options) \
WXMPMeta_ParseFromBuffer_1 ( this->xmpRef, buffer, bufferSize, options, &wResult )
-#define zXMPMeta_SerializeToBuffer_1(pktString,options,padding,newline,indent,baseIndent,SetClientString) \
- WXMPMeta_SerializeToBuffer_1 ( this->xmpRef, pktString, options, padding, newline, indent, baseIndent, SetClientString, &wResult )
-
-#define zXMPMeta_SetDefaultErrorCallback_1(proc,context,limit) \
- WXMPMeta_SetDefaultErrorCallback_1 ( WrapErrorNotify, proc, context, limit, &wResult )
-
-#define zXMPMeta_SetErrorCallback_1(proc,context,limit) \
- WXMPMeta_SetErrorCallback_1 ( this->xmpRef, WrapErrorNotify, proc, context, limit, &wResult )
-
-#define zXMPMeta_ResetErrorCallbackLimit_1(limit) \
- WXMPMeta_ResetErrorCallbackLimit_1 ( this->xmpRef, limit, &wResult )
+#define zXMPMeta_SerializeToBuffer_1(pktString,pktSize,options,padding,newline,indent,baseIndent) \
+ WXMPMeta_SerializeToBuffer_1 ( this->xmpRef, pktString, pktSize, options, padding, newline, indent, baseIndent, &wResult )
// =================================================================================================
extern void
-XMP_PUBLIC WXMPMeta_GetVersionInfo_1 ( XMP_VersionInfo * info );
+WXMPMeta_GetVersionInfo_1 ( XMP_VersionInfo * info );
extern void
-XMP_PUBLIC WXMPMeta_Initialize_1 ( WXMP_Result * wResult );
+WXMPMeta_Initialize_1 ( WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPMeta_Terminate_1();
+WXMPMeta_Terminate_1();
+
+extern void
+WXMPMeta_Unlock_1 ( XMP_OptionBits options );
// -------------------------------------------------------------------------------------------------
extern void
-XMP_PUBLIC WXMPMeta_CTor_1 ( WXMP_Result * wResult );
+WXMPMeta_CTor_1 ( WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPMeta_IncrementRefCount_1 ( XMPMetaRef xmpRef );
+WXMPMeta_IncrementRefCount_1 ( XMPMetaRef xmpRef );
extern void
-XMP_PUBLIC WXMPMeta_DecrementRefCount_1 ( XMPMetaRef xmpRef );
+WXMPMeta_DecrementRefCount_1 ( XMPMetaRef xmpRef );
// -------------------------------------------------------------------------------------------------
extern void
-XMP_PUBLIC WXMPMeta_GetGlobalOptions_1 ( WXMP_Result * wResult );
+WXMPMeta_GetGlobalOptions_1 ( WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPMeta_SetGlobalOptions_1 ( XMP_OptionBits options,
+WXMPMeta_SetGlobalOptions_1 ( XMP_OptionBits options,
WXMP_Result * wResult );
// -------------------------------------------------------------------------------------------------
extern void
-XMP_PUBLIC WXMPMeta_DumpNamespaces_1 ( XMP_TextOutputProc outProc,
+WXMPMeta_DumpNamespaces_1 ( XMP_TextOutputProc outProc,
void * refCon,
WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPMeta_Use_CPP_DOM_APIs_1( XMP_Bool useNewCoreAPIs,
- WXMP_Result * wResult );
+WXMPMeta_DumpAliases_1 ( XMP_TextOutputProc outProc,
+ void * refCon,
+ WXMP_Result * wResult );
// -------------------------------------------------------------------------------------------------
extern void
-XMP_PUBLIC WXMPMeta_RegisterNamespace_1 ( XMP_StringPtr namespaceURI,
- XMP_StringPtr suggestedPrefix,
- void * actualPrefix,
- SetClientStringProc SetClientString,
- WXMP_Result * wResult );
+WXMPMeta_RegisterNamespace_1 ( XMP_StringPtr namespaceURI,
+ XMP_StringPtr prefix,
+ WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPMeta_GetNamespacePrefix_1 ( XMP_StringPtr namespaceURI,
- void * namespacePrefix,
- SetClientStringProc SetClientString,
- WXMP_Result * wResult );
+WXMPMeta_GetNamespacePrefix_1 ( XMP_StringPtr namespaceURI,
+ XMP_StringPtr * namespacePrefix,
+ XMP_StringLen * prefixSize,
+ WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPMeta_GetNamespaceURI_1 ( XMP_StringPtr namespacePrefix,
- void * namespaceURI,
- SetClientStringProc SetClientString,
- WXMP_Result * wResult );
+WXMPMeta_GetNamespaceURI_1 ( XMP_StringPtr namespacePrefix,
+ XMP_StringPtr * namespaceURI,
+ XMP_StringLen * uriSize,
+ WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPMeta_DeleteNamespace_1 ( XMP_StringPtr namespaceURI,
+WXMPMeta_DeleteNamespace_1 ( XMP_StringPtr namespaceURI,
WXMP_Result * wResult );
// -------------------------------------------------------------------------------------------------
extern void
-XMP_PUBLIC WXMPMeta_GetIXMPMetadata_1(XMPMetaRef xmpObjRef,
-WXMP_Result * wResult );
-
+WXMPMeta_RegisterAlias_1 ( XMP_StringPtr aliasNS,
+ XMP_StringPtr aliasProp,
+ XMP_StringPtr actualNS,
+ XMP_StringPtr actualProp,
+ XMP_OptionBits arrayForm,
+ WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPMeta_GetProperty_1 ( XMPMetaRef xmpRef,
+WXMPMeta_ResolveAlias_1 ( XMP_StringPtr aliasNS,
+ XMP_StringPtr aliasProp,
+ XMP_StringPtr * actualNS,
+ XMP_StringLen * nsSize,
+ XMP_StringPtr * actualProp,
+ XMP_StringLen * propSize,
+ XMP_OptionBits * arrayForm,
+ WXMP_Result * wResult );
+
+extern void
+WXMPMeta_DeleteAlias_1 ( XMP_StringPtr aliasNS,
+ XMP_StringPtr aliasProp,
+ WXMP_Result * wResult );
+
+extern void
+WXMPMeta_RegisterStandardAliases_1 ( XMP_StringPtr schemaNS,
+ WXMP_Result * wResult );
+
+// -------------------------------------------------------------------------------------------------
+
+extern void
+WXMPMeta_UnlockObject_1 ( XMPMetaRef xmpRef,
+ XMP_OptionBits options );
+
+// -------------------------------------------------------------------------------------------------
+
+extern void
+WXMPMeta_GetProperty_1 ( XMPMetaRef xmpRef,
XMP_StringPtr schemaNS,
XMP_StringPtr propName,
- void * propValue,
+ XMP_StringPtr * propValue,
+ XMP_StringLen * valueSize,
XMP_OptionBits * options,
- SetClientStringProc SetClientString,
WXMP_Result * wResult ) /* const */ ;
extern void
-XMP_PUBLIC WXMPMeta_GetArrayItem_1 ( XMPMetaRef xmpRef,
+WXMPMeta_GetArrayItem_1 ( XMPMetaRef xmpRef,
XMP_StringPtr schemaNS,
XMP_StringPtr arrayName,
XMP_Index itemIndex,
- void * itemValue,
+ XMP_StringPtr * itemValue,
+ XMP_StringLen * valueSize,
XMP_OptionBits * options,
- SetClientStringProc SetClientString,
WXMP_Result * wResult ) /* const */ ;
extern void
-XMP_PUBLIC WXMPMeta_GetStructField_1 ( XMPMetaRef xmpRef,
+WXMPMeta_GetStructField_1 ( XMPMetaRef xmpRef,
XMP_StringPtr schemaNS,
XMP_StringPtr structName,
XMP_StringPtr fieldNS,
XMP_StringPtr fieldName,
- void * fieldValue,
+ XMP_StringPtr * fieldValue,
+ XMP_StringLen * valueSize,
XMP_OptionBits * options,
- SetClientStringProc SetClientString,
WXMP_Result * wResult ) /* const */ ;
extern void
-XMP_PUBLIC WXMPMeta_GetQualifier_1 ( XMPMetaRef xmpRef,
+WXMPMeta_GetQualifier_1 ( XMPMetaRef xmpRef,
XMP_StringPtr schemaNS,
XMP_StringPtr propName,
XMP_StringPtr qualNS,
XMP_StringPtr qualName,
- void * qualValue,
+ XMP_StringPtr * qualValue,
+ XMP_StringLen * valueSize,
XMP_OptionBits * options,
- SetClientStringProc SetClientString,
WXMP_Result * wResult ) /* const */ ;
// -------------------------------------------------------------------------------------------------
extern void
-XMP_PUBLIC WXMPMeta_SetProperty_1 ( XMPMetaRef xmpRef,
+WXMPMeta_SetProperty_1 ( XMPMetaRef xmpRef,
XMP_StringPtr schemaNS,
XMP_StringPtr propName,
XMP_StringPtr propValue,
@@ -324,7 +340,7 @@ XMP_PUBLIC WXMPMeta_SetProperty_1 ( XMPMetaRef xmpRef,
WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPMeta_SetArrayItem_1 ( XMPMetaRef xmpRef,
+WXMPMeta_SetArrayItem_1 ( XMPMetaRef xmpRef,
XMP_StringPtr schemaNS,
XMP_StringPtr arrayName,
XMP_Index itemIndex,
@@ -333,7 +349,7 @@ XMP_PUBLIC WXMPMeta_SetArrayItem_1 ( XMPMetaRef xmpRef,
WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPMeta_AppendArrayItem_1 ( XMPMetaRef xmpRef,
+WXMPMeta_AppendArrayItem_1 ( XMPMetaRef xmpRef,
XMP_StringPtr schemaNS,
XMP_StringPtr arrayName,
XMP_OptionBits arrayOptions,
@@ -342,7 +358,7 @@ XMP_PUBLIC WXMPMeta_AppendArrayItem_1 ( XMPMetaRef xmpRef,
WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPMeta_SetStructField_1 ( XMPMetaRef xmpRef,
+WXMPMeta_SetStructField_1 ( XMPMetaRef xmpRef,
XMP_StringPtr schemaNS,
XMP_StringPtr structName,
XMP_StringPtr fieldNS,
@@ -352,7 +368,7 @@ XMP_PUBLIC WXMPMeta_SetStructField_1 ( XMPMetaRef xmpRef,
WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPMeta_SetQualifier_1 ( XMPMetaRef xmpRef,
+WXMPMeta_SetQualifier_1 ( XMPMetaRef xmpRef,
XMP_StringPtr schemaNS,
XMP_StringPtr propName,
XMP_StringPtr qualNS,
@@ -364,20 +380,20 @@ XMP_PUBLIC WXMPMeta_SetQualifier_1 ( XMPMetaRef xmpRef,
// -------------------------------------------------------------------------------------------------
extern void
-XMP_PUBLIC WXMPMeta_DeleteProperty_1 ( XMPMetaRef xmpRef,
+WXMPMeta_DeleteProperty_1 ( XMPMetaRef xmpRef,
XMP_StringPtr schemaNS,
XMP_StringPtr propName,
WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPMeta_DeleteArrayItem_1 ( XMPMetaRef xmpRef,
+WXMPMeta_DeleteArrayItem_1 ( XMPMetaRef xmpRef,
XMP_StringPtr schemaNS,
XMP_StringPtr arrayName,
XMP_Index itemIndex,
WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPMeta_DeleteStructField_1 ( XMPMetaRef xmpRef,
+WXMPMeta_DeleteStructField_1 ( XMPMetaRef xmpRef,
XMP_StringPtr schemaNS,
XMP_StringPtr structName,
XMP_StringPtr fieldNS,
@@ -385,7 +401,7 @@ XMP_PUBLIC WXMPMeta_DeleteStructField_1 ( XMPMetaRef xmpRef,
WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPMeta_DeleteQualifier_1 ( XMPMetaRef xmpRef,
+WXMPMeta_DeleteQualifier_1 ( XMPMetaRef xmpRef,
XMP_StringPtr schemaNS,
XMP_StringPtr propName,
XMP_StringPtr qualNS,
@@ -395,20 +411,20 @@ XMP_PUBLIC WXMPMeta_DeleteQualifier_1 ( XMPMetaRef xmpRef,
// -------------------------------------------------------------------------------------------------
extern void
-XMP_PUBLIC WXMPMeta_DoesPropertyExist_1 ( XMPMetaRef xmpRef,
+WXMPMeta_DoesPropertyExist_1 ( XMPMetaRef xmpRef,
XMP_StringPtr schemaNS,
XMP_StringPtr propName,
WXMP_Result * wResult ) /* const */ ;
extern void
-XMP_PUBLIC WXMPMeta_DoesArrayItemExist_1 ( XMPMetaRef xmpRef,
+WXMPMeta_DoesArrayItemExist_1 ( XMPMetaRef xmpRef,
XMP_StringPtr schemaNS,
XMP_StringPtr arrayName,
XMP_Index itemIndex,
WXMP_Result * wResult ) /* const */ ;
extern void
-XMP_PUBLIC WXMPMeta_DoesStructFieldExist_1 ( XMPMetaRef xmpRef,
+WXMPMeta_DoesStructFieldExist_1 ( XMPMetaRef xmpRef,
XMP_StringPtr schemaNS,
XMP_StringPtr structName,
XMP_StringPtr fieldNS,
@@ -416,7 +432,7 @@ XMP_PUBLIC WXMPMeta_DoesStructFieldExist_1 ( XMPMetaRef xmpRef,
WXMP_Result * wResult ) /* const */ ;
extern void
-XMP_PUBLIC WXMPMeta_DoesQualifierExist_1 ( XMPMetaRef xmpRef,
+WXMPMeta_DoesQualifierExist_1 ( XMPMetaRef xmpRef,
XMP_StringPtr schemaNS,
XMP_StringPtr propName,
XMP_StringPtr qualNS,
@@ -426,19 +442,20 @@ XMP_PUBLIC WXMPMeta_DoesQualifierExist_1 ( XMPMetaRef xmpRef,
// -------------------------------------------------------------------------------------------------
extern void
-XMP_PUBLIC WXMPMeta_GetLocalizedText_1 ( XMPMetaRef xmpRef,
+WXMPMeta_GetLocalizedText_1 ( XMPMetaRef xmpRef,
XMP_StringPtr schemaNS,
XMP_StringPtr altTextName,
XMP_StringPtr genericLang,
XMP_StringPtr specificLang,
- void * clientLang,
- void * clientValue,
+ XMP_StringPtr * actualLang,
+ XMP_StringLen * langSize,
+ XMP_StringPtr * itemValue,
+ XMP_StringLen * valueSize,
XMP_OptionBits * options,
- SetClientStringProc SetClientString,
WXMP_Result * wResult ) /* const */ ;
extern void
-XMP_PUBLIC WXMPMeta_SetLocalizedText_1 ( XMPMetaRef xmpRef,
+WXMPMeta_SetLocalizedText_1 ( XMPMetaRef xmpRef,
XMP_StringPtr schemaNS,
XMP_StringPtr altTextName,
XMP_StringPtr genericLang,
@@ -447,18 +464,10 @@ XMP_PUBLIC WXMPMeta_SetLocalizedText_1 ( XMPMetaRef xmpRef,
XMP_OptionBits options,
WXMP_Result * wResult );
-extern void
-XMP_PUBLIC WXMPMeta_DeleteLocalizedText_1 ( XMPMetaRef xmpRef,
- XMP_StringPtr schemaNS,
- XMP_StringPtr altTextName,
- XMP_StringPtr genericLang,
- XMP_StringPtr specificLang,
- WXMP_Result * wResult );
-
// -------------------------------------------------------------------------------------------------
extern void
-XMP_PUBLIC WXMPMeta_GetProperty_Bool_1 ( XMPMetaRef xmpRef,
+WXMPMeta_GetProperty_Bool_1 ( XMPMetaRef xmpRef,
XMP_StringPtr schemaNS,
XMP_StringPtr propName,
XMP_Bool * propValue,
@@ -466,7 +475,7 @@ XMP_PUBLIC WXMPMeta_GetProperty_Bool_1 ( XMPMetaRef xmpRef,
WXMP_Result * wResult ) /* const */ ;
extern void
-XMP_PUBLIC WXMPMeta_GetProperty_Int_1 ( XMPMetaRef xmpRef,
+WXMPMeta_GetProperty_Int_1 ( XMPMetaRef xmpRef,
XMP_StringPtr schemaNS,
XMP_StringPtr propName,
XMP_Int32 * propValue,
@@ -474,7 +483,7 @@ XMP_PUBLIC WXMPMeta_GetProperty_Int_1 ( XMPMetaRef xmpRef,
WXMP_Result * wResult ) /* const */ ;
extern void
-XMP_PUBLIC WXMPMeta_GetProperty_Int64_1 ( XMPMetaRef xmpRef,
+WXMPMeta_GetProperty_Int64_1 ( XMPMetaRef xmpRef,
XMP_StringPtr schemaNS,
XMP_StringPtr propName,
XMP_Int64 * propValue,
@@ -482,7 +491,7 @@ XMP_PUBLIC WXMPMeta_GetProperty_Int64_1 ( XMPMetaRef xmpRef,
WXMP_Result * wResult ) /* const */ ;
extern void
-XMP_PUBLIC WXMPMeta_GetProperty_Float_1 ( XMPMetaRef xmpRef,
+WXMPMeta_GetProperty_Float_1 ( XMPMetaRef xmpRef,
XMP_StringPtr schemaNS,
XMP_StringPtr propName,
double * propValue,
@@ -490,7 +499,7 @@ XMP_PUBLIC WXMPMeta_GetProperty_Float_1 ( XMPMetaRef xmpRef,
WXMP_Result * wResult ) /* const */ ;
extern void
-XMP_PUBLIC WXMPMeta_GetProperty_Date_1 ( XMPMetaRef xmpRef,
+WXMPMeta_GetProperty_Date_1 ( XMPMetaRef xmpRef,
XMP_StringPtr schemaNS,
XMP_StringPtr propName,
XMP_DateTime * propValue,
@@ -498,7 +507,7 @@ XMP_PUBLIC WXMPMeta_GetProperty_Date_1 ( XMPMetaRef xmpRef,
WXMP_Result * wResult ) /* const */ ;
extern void
-XMP_PUBLIC WXMPMeta_SetProperty_Bool_1 ( XMPMetaRef xmpRef,
+WXMPMeta_SetProperty_Bool_1 ( XMPMetaRef xmpRef,
XMP_StringPtr schemaNS,
XMP_StringPtr propName,
XMP_Bool propValue,
@@ -506,7 +515,7 @@ XMP_PUBLIC WXMPMeta_SetProperty_Bool_1 ( XMPMetaRef xmpRef,
WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPMeta_SetProperty_Int_1 ( XMPMetaRef xmpRef,
+WXMPMeta_SetProperty_Int_1 ( XMPMetaRef xmpRef,
XMP_StringPtr schemaNS,
XMP_StringPtr propName,
XMP_Int32 propValue,
@@ -514,7 +523,7 @@ XMP_PUBLIC WXMPMeta_SetProperty_Int_1 ( XMPMetaRef xmpRef,
WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPMeta_SetProperty_Int64_1 ( XMPMetaRef xmpRef,
+WXMPMeta_SetProperty_Int64_1 ( XMPMetaRef xmpRef,
XMP_StringPtr schemaNS,
XMP_StringPtr propName,
XMP_Int64 propValue,
@@ -522,7 +531,7 @@ XMP_PUBLIC WXMPMeta_SetProperty_Int64_1 ( XMPMetaRef xmpRef,
WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPMeta_SetProperty_Float_1 ( XMPMetaRef xmpRef,
+WXMPMeta_SetProperty_Float_1 ( XMPMetaRef xmpRef,
XMP_StringPtr schemaNS,
XMP_StringPtr propName,
double propValue,
@@ -530,7 +539,7 @@ XMP_PUBLIC WXMPMeta_SetProperty_Float_1 ( XMPMetaRef xmpRef,
WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPMeta_SetProperty_Date_1 ( XMPMetaRef xmpRef,
+WXMPMeta_SetProperty_Date_1 ( XMPMetaRef xmpRef,
XMP_StringPtr schemaNS,
XMP_StringPtr propName,
const XMP_DateTime & propValue,
@@ -540,46 +549,46 @@ XMP_PUBLIC WXMPMeta_SetProperty_Date_1 ( XMPMetaRef xmpRef,
// -------------------------------------------------------------------------------------------------
extern void
-XMP_PUBLIC WXMPMeta_GetObjectName_1 ( XMPMetaRef xmpRef,
- void * objName,
- SetClientStringProc SetClientString,
- WXMP_Result * wResult ) /* const */ ;
+WXMPMeta_GetObjectName_1 ( XMPMetaRef xmpRef,
+ XMP_StringPtr * namePtr,
+ XMP_StringLen * nameLen,
+ WXMP_Result * wResult ) /* const */ ;
extern void
-XMP_PUBLIC WXMPMeta_SetObjectName_1 ( XMPMetaRef xmpRef,
+WXMPMeta_SetObjectName_1 ( XMPMetaRef xmpRef,
XMP_StringPtr name,
WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPMeta_GetObjectOptions_1 ( XMPMetaRef xmpRef,
+WXMPMeta_GetObjectOptions_1 ( XMPMetaRef xmpRef,
WXMP_Result * wResult ) /* const */ ;
extern void
-XMP_PUBLIC WXMPMeta_SetObjectOptions_1 ( XMPMetaRef xmpRef,
+WXMPMeta_SetObjectOptions_1 ( XMPMetaRef xmpRef,
XMP_OptionBits options,
WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPMeta_Sort_1 ( XMPMetaRef xmpRef,
+WXMPMeta_Sort_1 ( XMPMetaRef xmpRef,
WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPMeta_Erase_1 ( XMPMetaRef xmpRef,
+WXMPMeta_Erase_1 ( XMPMetaRef xmpRef,
WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPMeta_Clone_1 ( XMPMetaRef xmpRef,
+WXMPMeta_Clone_1 ( XMPMetaRef xmpRef,
XMP_OptionBits options,
WXMP_Result * wResult ) /* const */ ;
extern void
-XMP_PUBLIC WXMPMeta_CountArrayItems_1 ( XMPMetaRef xmpRef,
+WXMPMeta_CountArrayItems_1 ( XMPMetaRef xmpRef,
XMP_StringPtr schemaNS,
XMP_StringPtr arrayName,
WXMP_Result * wResult ) /* const */ ;
extern void
-XMP_PUBLIC WXMPMeta_DumpObject_1 ( XMPMetaRef xmpRef,
+WXMPMeta_DumpObject_1 ( XMPMetaRef xmpRef,
XMP_TextOutputProc outProc,
void * refCon,
WXMP_Result * wResult ) /* const */ ;
@@ -587,44 +596,22 @@ XMP_PUBLIC WXMPMeta_DumpObject_1 ( XMPMetaRef xmpRef,
// -------------------------------------------------------------------------------------------------
extern void
-XMP_PUBLIC WXMPMeta_ParseFromBuffer_1 ( XMPMetaRef xmpRef,
+WXMPMeta_ParseFromBuffer_1 ( XMPMetaRef xmpRef,
XMP_StringPtr buffer,
XMP_StringLen bufferSize,
XMP_OptionBits options,
WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPMeta_SerializeToBuffer_1 ( XMPMetaRef xmpRef,
- void * pktString,
- XMP_OptionBits options,
- XMP_StringLen padding,
- XMP_StringPtr newline,
- XMP_StringPtr indent,
- XMP_Index baseIndent,
- SetClientStringProc SetClientString,
- WXMP_Result * wResult ) /* const */ ;
-
-// -------------------------------------------------------------------------------------------------
-
-extern void
-XMP_PUBLIC WXMPMeta_SetDefaultErrorCallback_1 ( XMPMeta_ErrorCallbackWrapper wrapperProc,
- XMPMeta_ErrorCallbackProc clientProc,
- void * context,
- XMP_Uns32 limit,
- WXMP_Result * wResult );
-
-extern void
-XMP_PUBLIC WXMPMeta_SetErrorCallback_1 ( XMPMetaRef xmpRef,
- XMPMeta_ErrorCallbackWrapper wrapperProc,
- XMPMeta_ErrorCallbackProc clientProc,
- void * context,
- XMP_Uns32 limit,
- WXMP_Result * wResult );
-
-extern void
-XMP_PUBLIC WXMPMeta_ResetErrorCallbackLimit_1 ( XMPMetaRef xmpRef,
- XMP_Uns32 limit,
- WXMP_Result * wResult );
+WXMPMeta_SerializeToBuffer_1 ( XMPMetaRef xmpRef,
+ XMP_StringPtr * pktString,
+ XMP_StringLen * pktSize,
+ XMP_OptionBits options,
+ XMP_StringLen padding,
+ XMP_StringPtr newline,
+ XMP_StringPtr indent,
+ XMP_Index baseIndent,
+ WXMP_Result * wResult ) /* const */ ;
// =================================================================================================
diff --git a/xmpsdk/include/client-glue/WXMPUtils.hpp b/xmpsdk/include/client-glue/WXMPUtils.hpp
index b785357d..55890fc5 100644
--- a/xmpsdk/include/client-glue/WXMPUtils.hpp
+++ b/xmpsdk/include/client-glue/WXMPUtils.hpp
@@ -2,7 +2,7 @@
#define __WXMPUtils_hpp__ 1
// =================================================================================================
-// Copyright 2002 Adobe Systems Incorporated
+// Copyright 2002-2008 Adobe Systems Incorporated
// All Rights Reserved.
//
// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms
@@ -10,41 +10,42 @@
// =================================================================================================
#include "client-glue/WXMP_Common.hpp"
+
#if __cplusplus
extern "C" {
#endif
// =================================================================================================
-#define zXMPUtils_ComposeArrayItemPath_1(schemaNS,arrayName,itemIndex,itemPath,SetClientString) \
- WXMPUtils_ComposeArrayItemPath_1 ( schemaNS, arrayName, itemIndex, itemPath, SetClientString, &wResult );
+#define zXMPUtils_ComposeArrayItemPath_1(schemaNS,arrayName,itemIndex,fullPath,pathSize) \
+ WXMPUtils_ComposeArrayItemPath_1 ( schemaNS, arrayName, itemIndex, fullPath, pathSize, &wResult );
-#define zXMPUtils_ComposeStructFieldPath_1(schemaNS,structName,fieldNS,fieldName,fieldPath,SetClientString) \
- WXMPUtils_ComposeStructFieldPath_1 ( schemaNS, structName, fieldNS, fieldName, fieldPath, SetClientString, &wResult );
+#define zXMPUtils_ComposeStructFieldPath_1(schemaNS,structName,fieldNS,fieldName,fullPath,pathSize) \
+ WXMPUtils_ComposeStructFieldPath_1 ( schemaNS, structName, fieldNS, fieldName, fullPath, pathSize, &wResult );
-#define zXMPUtils_ComposeQualifierPath_1(schemaNS,propName,qualNS,qualName,qualPath,SetClientString) \
- WXMPUtils_ComposeQualifierPath_1 ( schemaNS, propName, qualNS, qualName, qualPath, SetClientString, &wResult );
+#define zXMPUtils_ComposeQualifierPath_1(schemaNS,propName,qualNS,qualName,fullPath,pathSize) \
+ WXMPUtils_ComposeQualifierPath_1 ( schemaNS, propName, qualNS, qualName, fullPath, pathSize, &wResult );
-#define zXMPUtils_ComposeLangSelector_1(schemaNS,arrayName,langName,selPath,SetClientString) \
- WXMPUtils_ComposeLangSelector_1 ( schemaNS, arrayName, langName, selPath, SetClientString, &wResult );
+#define zXMPUtils_ComposeLangSelector_1(schemaNS,arrayName,langName,fullPath,pathSize) \
+ WXMPUtils_ComposeLangSelector_1 ( schemaNS, arrayName, langName, fullPath, pathSize, &wResult );
-#define zXMPUtils_ComposeFieldSelector_1(schemaNS,arrayName,fieldNS,fieldName,fieldValue,selPath,SetClientString) \
- WXMPUtils_ComposeFieldSelector_1 ( schemaNS, arrayName, fieldNS, fieldName, fieldValue, selPath, SetClientString, &wResult );
+#define zXMPUtils_ComposeFieldSelector_1(schemaNS,arrayName,fieldNS,fieldName,fieldValue,fullPath,pathSize) \
+ WXMPUtils_ComposeFieldSelector_1 ( schemaNS, arrayName, fieldNS, fieldName, fieldValue, fullPath, pathSize, &wResult );
-#define zXMPUtils_ConvertFromBool_1(binValue,strValue,SetClientString) \
- WXMPUtils_ConvertFromBool_1 ( binValue, strValue, SetClientString, &wResult );
+#define zXMPUtils_ConvertFromBool_1(binValue,strValue,strSize) \
+ WXMPUtils_ConvertFromBool_1 ( binValue, strValue, strSize, &wResult );
-#define zXMPUtils_ConvertFromInt_1(binValue,format,strValue,SetClientString) \
- WXMPUtils_ConvertFromInt_1 ( binValue, format, strValue, SetClientString, &wResult );
+#define zXMPUtils_ConvertFromInt_1(binValue,format,strValue,strSize) \
+ WXMPUtils_ConvertFromInt_1 ( binValue, format, strValue, strSize, &wResult );
-#define zXMPUtils_ConvertFromInt64_1(binValue,format,strValue,SetClientString) \
- WXMPUtils_ConvertFromInt64_1 ( binValue, format, strValue, SetClientString, &wResult );
+#define zXMPUtils_ConvertFromInt64_1(binValue,format,strValue,strSize) \
+ WXMPUtils_ConvertFromInt64_1 ( binValue, format, strValue, strSize, &wResult );
-#define zXMPUtils_ConvertFromFloat_1(binValue,format,strValue,SetClientString) \
- WXMPUtils_ConvertFromFloat_1 ( binValue, format, strValue, SetClientString, &wResult );
+#define zXMPUtils_ConvertFromFloat_1(binValue,format,strValue,strSize) \
+ WXMPUtils_ConvertFromFloat_1 ( binValue, format, strValue, strSize, &wResult );
-#define zXMPUtils_ConvertFromDate_1(binValue,strValue,SetClientString) \
- WXMPUtils_ConvertFromDate_1 ( binValue, strValue, SetClientString, &wResult );
+#define zXMPUtils_ConvertFromDate_1(binValue,strValue,strSize) \
+ WXMPUtils_ConvertFromDate_1 ( binValue, strValue, strSize, &wResult );
#define zXMPUtils_ConvertToBool_1(strValue) \
WXMPUtils_ConvertToBool_1 ( strValue, &wResult );
@@ -76,206 +77,213 @@ extern "C" {
#define zXMPUtils_CompareDateTime_1(left,right) \
WXMPUtils_CompareDateTime_1 ( left, right, &wResult );
-#define zXMPUtils_EncodeToBase64_1(rawStr,rawLen,encodedStr,SetClientString) \
- WXMPUtils_EncodeToBase64_1 ( rawStr, rawLen, encodedStr, SetClientString, &wResult );
+#define zXMPUtils_EncodeToBase64_1(rawStr,rawLen,encodedStr,encodedLen) \
+ WXMPUtils_EncodeToBase64_1 ( rawStr, rawLen, encodedStr, encodedLen, &wResult );
-#define zXMPUtils_DecodeFromBase64_1(encodedStr,encodedLen,rawStr,SetClientString) \
- WXMPUtils_DecodeFromBase64_1 ( encodedStr, encodedLen, rawStr, SetClientString, &wResult );
+#define zXMPUtils_DecodeFromBase64_1(encodedStr,encodedLen,rawStr,rawLen) \
+ WXMPUtils_DecodeFromBase64_1 ( encodedStr, encodedLen, rawStr, rawLen, &wResult );
-#define zXMPUtils_PackageForJPEG_1(xmpObj,stdStr,extStr,digestStr,SetClientString) \
- WXMPUtils_PackageForJPEG_1 ( xmpObj, stdStr, extStr, digestStr, SetClientString, &wResult );
+#define zXMPUtils_PackageForJPEG_1(xmpObj,stdStr,stdLen,extStr,extLen,digestStr,digestLen) \
+ WXMPUtils_PackageForJPEG_1 ( xmpObj, stdStr, stdLen, extStr, extLen, digestStr, digestLen, &wResult );
#define zXMPUtils_MergeFromJPEG_1(fullXMP,extendedXMP) \
WXMPUtils_MergeFromJPEG_1 ( fullXMP, extendedXMP, &wResult );
-#define zXMPUtils_CatenateArrayItems_1(xmpObj,schemaNS,arrayName,separator,quotes,options,catedStr,SetClientString) \
- WXMPUtils_CatenateArrayItems_1 ( xmpObj, schemaNS, arrayName, separator, quotes, options, catedStr, SetClientString, &wResult );
+#define zXMPUtils_CatenateArrayItems_1(xmpObj,schemaNS,arrayName,separator,quotes,options,catedPtr,catedLen) \
+ WXMPUtils_CatenateArrayItems_1 ( xmpObj, schemaNS, arrayName, separator, quotes, options, catedPtr, catedLen, &wResult );
#define zXMPUtils_SeparateArrayItems_1(xmpObj,schemaNS,arrayName,options,catedStr) \
WXMPUtils_SeparateArrayItems_1 ( xmpObj, schemaNS, arrayName, options, catedStr, &wResult );
-#define zXMPUtils_ApplyTemplate_1(workingXMP,templateXMP,actions) \
- WXMPUtils_ApplyTemplate_1 ( workingXMP, templateXMP, actions, &wResult );
-
#define zXMPUtils_RemoveProperties_1(xmpObj,schemaNS,propName,options) \
WXMPUtils_RemoveProperties_1 ( xmpObj, schemaNS, propName, options, &wResult );
+#define zXMPUtils_AppendProperties_1(source,dest,options) \
+ WXMPUtils_AppendProperties_1 ( source, dest, options, &wResult );
+
#define zXMPUtils_DuplicateSubtree_1(source,dest,sourceNS,sourceRoot,destNS,destRoot,options) \
WXMPUtils_DuplicateSubtree_1 ( source, dest, sourceNS, sourceRoot, destNS, destRoot, options, &wResult );
// =================================================================================================
extern void
-XMP_PUBLIC WXMPUtils_ComposeArrayItemPath_1 ( XMP_StringPtr schemaNS,
+WXMPUtils_Unlock_1 ( XMP_OptionBits options );
+
+// -------------------------------------------------------------------------------------------------
+
+extern void
+WXMPUtils_ComposeArrayItemPath_1 ( XMP_StringPtr schemaNS,
XMP_StringPtr arrayName,
XMP_Index itemIndex,
- void * itemPath,
- SetClientStringProc SetClientString,
+ XMP_StringPtr * fullPath,
+ XMP_StringLen * pathSize,
WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPUtils_ComposeStructFieldPath_1 ( XMP_StringPtr schemaNS,
+WXMPUtils_ComposeStructFieldPath_1 ( XMP_StringPtr schemaNS,
XMP_StringPtr structName,
XMP_StringPtr fieldNS,
XMP_StringPtr fieldName,
- void * fieldPath,
- SetClientStringProc SetClientString,
+ XMP_StringPtr * fullPath,
+ XMP_StringLen * pathSize,
WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPUtils_ComposeQualifierPath_1 ( XMP_StringPtr schemaNS,
+WXMPUtils_ComposeQualifierPath_1 ( XMP_StringPtr schemaNS,
XMP_StringPtr propName,
XMP_StringPtr qualNS,
XMP_StringPtr qualName,
- void * qualPath,
- SetClientStringProc SetClientString,
+ XMP_StringPtr * fullPath,
+ XMP_StringLen * pathSize,
WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPUtils_ComposeLangSelector_1 ( XMP_StringPtr schemaNS,
+WXMPUtils_ComposeLangSelector_1 ( XMP_StringPtr schemaNS,
XMP_StringPtr arrayName,
XMP_StringPtr langName,
- void * selPath,
- SetClientStringProc SetClientString,
+ XMP_StringPtr * fullPath,
+ XMP_StringLen * pathSize,
WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPUtils_ComposeFieldSelector_1 ( XMP_StringPtr schemaNS,
+WXMPUtils_ComposeFieldSelector_1 ( XMP_StringPtr schemaNS,
XMP_StringPtr arrayName,
XMP_StringPtr fieldNS,
XMP_StringPtr fieldName,
XMP_StringPtr fieldValue,
- void * selPath,
- SetClientStringProc SetClientString,
+ XMP_StringPtr * fullPath,
+ XMP_StringLen * pathSize,
WXMP_Result * wResult );
// -------------------------------------------------------------------------------------------------
extern void
-XMP_PUBLIC WXMPUtils_ConvertFromBool_1 ( XMP_Bool binValue,
- void * strValue,
- SetClientStringProc SetClientString,
- WXMP_Result * wResult );
+WXMPUtils_ConvertFromBool_1 ( XMP_Bool binValue,
+ XMP_StringPtr * strValue,
+ XMP_StringLen * strSize,
+ WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPUtils_ConvertFromInt_1 ( XMP_Int32 binValue,
- XMP_StringPtr format,
- void * strValue,
- SetClientStringProc SetClientString,
- WXMP_Result * wResult );
+WXMPUtils_ConvertFromInt_1 ( XMP_Int32 binValue,
+ XMP_StringPtr format,
+ XMP_StringPtr * strValue,
+ XMP_StringLen * strSize,
+ WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPUtils_ConvertFromInt64_1 ( XMP_Int64 binValue,
- XMP_StringPtr format,
- void * strValue,
- SetClientStringProc SetClientString,
- WXMP_Result * wResult );
+WXMPUtils_ConvertFromInt64_1 ( XMP_Int64 binValue,
+ XMP_StringPtr format,
+ XMP_StringPtr * strValue,
+ XMP_StringLen * strSize,
+ WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPUtils_ConvertFromFloat_1 ( double binValue,
- XMP_StringPtr format,
- void * strValue,
- SetClientStringProc SetClientString,
- WXMP_Result * wResult );
+WXMPUtils_ConvertFromFloat_1 ( double binValue,
+ XMP_StringPtr format,
+ XMP_StringPtr * strValue,
+ XMP_StringLen * strSize,
+ WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPUtils_ConvertFromDate_1 ( const XMP_DateTime & binValue,
- void * strValue,
- SetClientStringProc SetClientString,
+WXMPUtils_ConvertFromDate_1 ( const XMP_DateTime & binValue,
+ XMP_StringPtr * strValue,
+ XMP_StringLen * strSize,
WXMP_Result * wResult );
// -------------------------------------------------------------------------------------------------
extern void
-XMP_PUBLIC WXMPUtils_ConvertToBool_1 ( XMP_StringPtr strValue,
+WXMPUtils_ConvertToBool_1 ( XMP_StringPtr strValue,
WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPUtils_ConvertToInt_1 ( XMP_StringPtr strValue,
+WXMPUtils_ConvertToInt_1 ( XMP_StringPtr strValue,
WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPUtils_ConvertToInt64_1 ( XMP_StringPtr strValue,
+WXMPUtils_ConvertToInt64_1 ( XMP_StringPtr strValue,
WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPUtils_ConvertToFloat_1 ( XMP_StringPtr strValue,
+WXMPUtils_ConvertToFloat_1 ( XMP_StringPtr strValue,
WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPUtils_ConvertToDate_1 ( XMP_StringPtr strValue,
+WXMPUtils_ConvertToDate_1 ( XMP_StringPtr strValue,
XMP_DateTime * binValue,
WXMP_Result * wResult );
// -------------------------------------------------------------------------------------------------
extern void
-XMP_PUBLIC WXMPUtils_CurrentDateTime_1 ( XMP_DateTime * time,
+WXMPUtils_CurrentDateTime_1 ( XMP_DateTime * time,
WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPUtils_SetTimeZone_1 ( XMP_DateTime * time,
+WXMPUtils_SetTimeZone_1 ( XMP_DateTime * time,
WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPUtils_ConvertToUTCTime_1 ( XMP_DateTime * time,
+WXMPUtils_ConvertToUTCTime_1 ( XMP_DateTime * time,
WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPUtils_ConvertToLocalTime_1 ( XMP_DateTime * time,
+WXMPUtils_ConvertToLocalTime_1 ( XMP_DateTime * time,
WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPUtils_CompareDateTime_1 ( const XMP_DateTime & left,
+WXMPUtils_CompareDateTime_1 ( const XMP_DateTime & left,
const XMP_DateTime & right,
WXMP_Result * wResult );
// -------------------------------------------------------------------------------------------------
extern void
-XMP_PUBLIC WXMPUtils_EncodeToBase64_1 ( XMP_StringPtr rawStr,
- XMP_StringLen rawLen,
- void * encodedStr,
- SetClientStringProc SetClientString,
- WXMP_Result * wResult );
+WXMPUtils_EncodeToBase64_1 ( XMP_StringPtr rawStr,
+ XMP_StringLen rawLen,
+ XMP_StringPtr * encodedStr,
+ XMP_StringLen * encodedLen,
+ WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPUtils_DecodeFromBase64_1 ( XMP_StringPtr encodedStr,
- XMP_StringLen encodedLen,
- void * rawStr,
- SetClientStringProc SetClientString,
- WXMP_Result * wResult );
+WXMPUtils_DecodeFromBase64_1 ( XMP_StringPtr encodedStr,
+ XMP_StringLen encodedLen,
+ XMP_StringPtr * rawStr,
+ XMP_StringLen * rawLen,
+ WXMP_Result * wResult );
// -------------------------------------------------------------------------------------------------
extern void
-XMP_PUBLIC WXMPUtils_PackageForJPEG_1 ( XMPMetaRef xmpObj,
- void * stdStr,
- void * extStr,
- void * digestStr,
- SetClientStringProc SetClientString,
- WXMP_Result * wResult );
+WXMPUtils_PackageForJPEG_1 ( XMPMetaRef xmpObj,
+ XMP_StringPtr * stdStr,
+ XMP_StringLen * stdLen,
+ XMP_StringPtr * extStr,
+ XMP_StringLen * extLen,
+ XMP_StringPtr * digestStr,
+ XMP_StringLen * digestLen,
+ WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPUtils_MergeFromJPEG_1 ( XMPMetaRef fullXMP,
+WXMPUtils_MergeFromJPEG_1 ( XMPMetaRef fullXMP,
XMPMetaRef extendedXMP,
WXMP_Result * wResult );
// -------------------------------------------------------------------------------------------------
extern void
-XMP_PUBLIC WXMPUtils_CatenateArrayItems_1 ( XMPMetaRef xmpObj,
- XMP_StringPtr schemaNS,
- XMP_StringPtr arrayName,
- XMP_StringPtr separator,
- XMP_StringPtr quotes,
- XMP_OptionBits options,
- void * catedStr,
- SetClientStringProc SetClientString,
- WXMP_Result * wResult );
+WXMPUtils_CatenateArrayItems_1 ( XMPMetaRef xmpObj,
+ XMP_StringPtr schemaNS,
+ XMP_StringPtr arrayName,
+ XMP_StringPtr separator,
+ XMP_StringPtr quotes,
+ XMP_OptionBits options,
+ XMP_StringPtr * catedStr,
+ XMP_StringLen * catedLen,
+ WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPUtils_SeparateArrayItems_1 ( XMPMetaRef xmpObj,
+WXMPUtils_SeparateArrayItems_1 ( XMPMetaRef xmpObj,
XMP_StringPtr schemaNS,
XMP_StringPtr arrayName,
XMP_OptionBits options,
@@ -283,20 +291,20 @@ XMP_PUBLIC WXMPUtils_SeparateArrayItems_1 ( XMPMetaRef xmpObj,
WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPUtils_ApplyTemplate_1 ( XMPMetaRef workingXMP,
- XMPMetaRef templateXMP,
- XMP_OptionBits options,
- WXMP_Result * wResult );
-
-extern void
-XMP_PUBLIC WXMPUtils_RemoveProperties_1 ( XMPMetaRef xmpObj,
+WXMPUtils_RemoveProperties_1 ( XMPMetaRef xmpObj,
XMP_StringPtr schemaNS,
XMP_StringPtr propName,
XMP_OptionBits options,
WXMP_Result * wResult );
extern void
-XMP_PUBLIC WXMPUtils_DuplicateSubtree_1 ( XMPMetaRef source,
+WXMPUtils_AppendProperties_1 ( XMPMetaRef source,
+ XMPMetaRef dest,
+ XMP_OptionBits options,
+ WXMP_Result * wResult );
+
+extern void
+WXMPUtils_DuplicateSubtree_1 ( XMPMetaRef source,
XMPMetaRef dest,
XMP_StringPtr sourceNS,
XMP_StringPtr sourceRoot,
diff --git a/xmpsdk/include/client-glue/WXMP_Common.hpp b/xmpsdk/include/client-glue/WXMP_Common.hpp
index 2fea1492..4d6eaab4 100644
--- a/xmpsdk/include/client-glue/WXMP_Common.hpp
+++ b/xmpsdk/include/client-glue/WXMP_Common.hpp
@@ -2,7 +2,7 @@
#define __WXMP_Common_hpp__ 1
// =================================================================================================
-// Copyright 2002 Adobe Systems Incorporated
+// 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
@@ -20,16 +20,13 @@
#define XMP_CTorDTorIntro(Class) template XMP_Inline Class
#define XMP_MethodIntro(Class,ResultType) template XMP_Inline ResultType Class
-typedef void (* SetClientStringProc) ( void * clientPtr, XMP_StringPtr valuePtr, XMP_StringLen valueLen );
-typedef void (* SetClientStringVectorProc) ( void * clientPtr, XMP_StringPtr * arrayPtr, XMP_Uns32 stringCount );
-
struct WXMP_Result {
XMP_StringPtr errMessage;
void * ptrResult;
double floatResult;
XMP_Uns64 int64Result;
XMP_Uns32 int32Result;
- WXMP_Result() : errMessage(0),ptrResult(NULL),floatResult(0),int64Result(0),int32Result(0){};
+ WXMP_Result() : errMessage(0) {};
};
#if __cplusplus
@@ -39,37 +36,35 @@ extern "C" {
#define PropagateException(res) \
if ( res.errMessage != 0 ) throw XMP_Error ( res.int32Result, res.errMessage );
-#ifndef XMP_TraceClientCalls
- #define XMP_TraceClientCalls 0
- #define XMP_TraceClientCallsToFile 0
+#ifndef TraceXMPCalls
+ #define TraceXMPCalls 0
#endif
-#if ! XMP_TraceClientCalls
+#if ! TraceXMPCalls
#define InvokeCheck(WCallProto) \
WXMP_Result wResult; \
WCallProto; \
PropagateException ( wResult )
#else
- extern FILE * xmpClientLog;
- #define InvokeCheck(WCallProto) \
- WXMP_Result wResult; \
- fprintf ( xmpClientLog, "WXMP calling: %s\n", #WCallProto ); fflush ( xmpClientLog ); \
- WCallProto; \
- if ( wResult.errMessage == 0 ) { \
- fprintf ( xmpClientLog, "WXMP back, no error\n" ); fflush ( xmpClientLog ); \
- } else { \
- fprintf ( xmpClientLog, "WXMP back, error: %s\n", wResult.errMessage ); fflush ( xmpClientLog ); \
- } \
+ #define InvokeCheck(WCallProto) \
+ WXMP_Result wResult; \
+ fprintf ( stderr, "WXMP calling: %s\n", #WCallProto ); fflush ( stderr ); \
+ WCallProto; \
+ if ( wResult.errMessage == 0 ) { \
+ fprintf ( stderr, "WXMP back, no error\n" ); fflush ( stderr ); \
+ } else { \
+ fprintf ( stderr, "WXMP back, error: %s\n", wResult.errMessage ); fflush ( stderr ); \
+ } \
PropagateException ( wResult )
#endif
-// =================================================================================================
+// -------------------------------------------------------------------------------------------------
#define WrapNoCheckVoid(WCallProto) \
WCallProto;
#define WrapCheckVoid(WCallProto) \
- InvokeCheck(WCallProto);
+ InvokeCheck(WCallProto)
#define WrapCheckMetaRef(result,WCallProto) \
InvokeCheck(WCallProto); \
@@ -83,10 +78,6 @@ extern "C" {
InvokeCheck(WCallProto); \
XMPDocOpsRef result = XMPDocOpsRef(wResult.ptrResult)
-#define WrapCheckNewMetadata(result,WCallProto) \
- InvokeCheck(WCallProto); \
- void * result = wResult.ptrResult
-
#define WrapCheckBool(result,WCallProto) \
InvokeCheck(WCallProto); \
bool result = bool(wResult.int32Result)
@@ -126,7 +117,7 @@ extern "C" {
// =================================================================================================
#if __cplusplus
-} // extern "C"
+} /* extern "C" */
#endif
#endif // __WXMP_Common_hpp__