| XMP Toolkit SDK 6.0.0

XMP.hpp File Reference

Overall header file for the XMP Toolkit. More...

`#include "XMP_Environment.h"`
`#include "XMP_Version.h"`
`#include "XMP_Const.h"`
`#include "TXMPMeta.hpp"`
`#include "TXMPIterator.hpp"`
`#include "TXMPUtils.hpp"`

Go to the source code of this file.

## Detailed Description

Overall header file for the XMP Toolkit.

This is an overall header file, the only one that C++ clients should include.

The full client API is in the `TXMPMeta.hpp`, `TXMPIterator.hpp`, `TXMPUtils.hpp` headers. Read these for information, but do not include them directly. The `TXMP`... classes are C++ template classes that must be instantiated with a string class such as `std::string`. The string class is used to return text strings for property values, serialized XMP, and so on. Clients must also compile `XMP.incl_cpp` to ensure that all client-side glue code is generated. This should be done by including it in exactly one client source file.

There are two C preprocessor macros that simplify use of the templates:

- `TXMP_STRING_TYPE` - Define this as the string class to use with the template. You will get the template headers included and typedefs (`SXMPMeta`, and so on) to use in your code.

- `TXMP_EXPAND_INLINE` - Define this as 1 if you want to have the template functions expanded inline in your code. Leave it undefined, or defined as 0, to use out-of-line instantiations of the template functions. Compiling `XMP.incl_cpp` generates explicit out-of-line instantiations if `TXMP_EXPAND_INLINE` is off.

The template parameter, class `tStringObj`, must have the following member functions (which match those for `std::string`):

     tStringObj& assign ( const char * str, size_t len )
     size_t size() const
     const char * c_str() const

The string class must be suitable for at least UTF-8. This is the encoding used for all general values, and is the default encoding for serialized XMP. The string type must also be suitable for UTF-16 or UTF-32 if those serialization encodings are used. This mainly means tolerating embedded 0 bytes, which `std::string` does.

Definition in file XMP.hpp.