20 #ifndef PROPERTIES_HPP_
21 #define PROPERTIES_HPP_
24 #include "exiv2lib_export.h"
62 explicit Prefix(
const std::string& prefix);
69 explicit Ns(
const std::string& ns);
94 static const XmpNsInfo* nsInfoUnsafe(
const std::string& prefix);
95 static void unregisterNsUnsafe(
const std::string& ns);
139 static std::string
ns(
const std::string& prefix);
147 static const char*
nsDesc(
const std::string& prefix);
171 static std::string
prefix(
const std::string& ns);
177 const std::string& key,
187 static void registerNs(
const std::string& ns,
const std::string& prefix);
256 XmpKey(
const std::string& prefix,
const std::string& property);
271 virtual std::string
key()
const;
281 virtual uint16_t
tag()
const;
287 std::string
ns()
const;
292 virtual XmpKey* clone_()
const;
297 std::auto_ptr<Impl> p_;
Abstract base class defining the Key of a metadatum. Keys are used to identify and group metadata.
Definition: metadatum.hpp:44
std::auto_ptr< Key > AutoPtr
Shortcut for a Key auto pointer.
Definition: metadatum.hpp:47
Class to provide a Read-Write Lock.
Definition: rwlock.hpp:90
Common interface for all types of values used with metadata.
Definition: value.hpp:51
Concrete keys for XMP metadata.
Definition: properties.hpp:231
virtual const char * familyName() const
Return an identifier for the type of metadata (the first part of the key)
virtual std::string tagName() const
Return the name of the tag (which is also the third part of the key)
virtual ~XmpKey()
Virtual destructor.
XmpKey(const XmpKey &rhs)
Copy constructor.
virtual uint16_t tag() const
Properties don't have a tag number. Return 0.
std::string ns() const
Return the schema namespace for the prefix of the key.
std::auto_ptr< XmpKey > AutoPtr
Shortcut for an XmpKey auto pointer.
Definition: properties.hpp:234
virtual std::string groupName() const
Return the name of the group (the second part of the key). For XMP keys, the group name is the schema...
XmpKey(const std::string &key)
Constructor to create an XMP key from a key string.
virtual std::string key() const
Return the key of the metadatum as a string. The key is of the form 'familyName.groupName....
XmpKey(const std::string &prefix, const std::string &property)
Constructor to create an XMP key from a schema prefix and a property name.
virtual std::string tagLabel() const
Return a label for the tag.
XMP property reference, implemented as a static class.
Definition: properties.hpp:85
static TypeId propertyType(const XmpKey &key)
Return the type for property key. The default for unknown keys is xmpText.
static std::ostream & printProperty(std::ostream &os, const std::string &key, const Value &value)
Interpret and print the value of an XMP property.
static NsRegistry nsRegistry_
Namespace registry.
Definition: properties.hpp:218
static void unregisterNs()
Unregister all custom namespaces.
static std::string ns(const std::string &prefix)
Return the namespace name for the schema associated with prefix.
static void unregisterNs(const std::string &ns)
Unregister a custom namespace ns.
static const XmpNsInfo * nsInfo(const std::string &prefix)
Return information about a schema namespace for prefix. Always returns a valid pointer.
static const XmpNsInfo * lookupNsRegistry(const XmpNsInfo::Prefix &prefix)
Get the registered namespace for a specific prefix from the registry.
static Exiv2::RWLock rwLock_
lock to be used while modifying properties
Definition: properties.hpp:199
static std::string prefix(const std::string &ns)
Return the (preferred) prefix for schema namespace ns.
static const XmpPropertyInfo * propertyInfo(const XmpKey &key)
Return information for the property for key.
static const char * nsDesc(const std::string &prefix)
Return the namespace description for the schema associated with prefix.
static void printProperties(std::ostream &os, const std::string &prefix)
Print a list of properties of a schema namespace to output stream os.
static void registeredNamespaces(Exiv2::Dictionary &nsDict)
Get all registered namespaces (for both Exiv2 and XMPsdk)
static const char * propertyDesc(const XmpKey &key)
Return the description of the property.
std::map< std::string, XmpNsInfo > NsRegistry
Type for the namespace registry.
Definition: properties.hpp:211
static const char * propertyTitle(const XmpKey &key)
Return the title (label) of the property.
static const XmpPropertyInfo * propertyList(const std::string &prefix)
Return read-only list of built-in properties for prefix.
static void registerNs(const std::string &ns, const std::string &prefix)
Register namespace ns with preferred prefix prefix.
IPTC dataset and type information.
Provides classes and functions to encode and decode Exif and Iptc data. The libexiv2 API consists of ...
Definition: asfvideo.hpp:36
EXIV2API std::ostream & operator<<(std::ostream &os, const DataSet &dataSet)
Output operator for dataSet.
Definition: datasets.cpp:709
TypeId
Exiv2 value type identifiers.
Definition: types.hpp:119
XmpCategory
Category of an XMP property.
Definition: properties.hpp:42
std::map< std::string, std::string > Dictionary
typedef for string:string map
Definition: datasets.hpp:364
For comparison with namespace.
Definition: properties.hpp:67
Ns(const std::string &ns)
Constructor.
std::string ns_
The namespace string.
Definition: properties.hpp:71
For comparison with prefix.
Definition: properties.hpp:60
std::string prefix_
The prefix string.
Definition: properties.hpp:64
Prefix(const std::string &prefix)
Constructor.
Structure mapping XMP namespaces and (preferred) prefixes.
Definition: properties.hpp:58
const XmpPropertyInfo * xmpPropertyInfo_
List of known properties.
Definition: properties.hpp:80
bool operator==(const Prefix &prefix) const
Comparison operator for prefix.
const char * desc_
Brief description of the namespace.
Definition: properties.hpp:81
const char * prefix_
(Preferred) prefix
Definition: properties.hpp:79
const char * ns_
Namespace.
Definition: properties.hpp:78
bool operator==(const Ns &ns) const
Comparison operator for namespace.
Information about one XMP property.
Definition: properties.hpp:45
const char * name_
Property name.
Definition: properties.hpp:49
const char * desc_
Property description.
Definition: properties.hpp:54
const char * title_
Property title or label.
Definition: properties.hpp:50
bool operator==(const std::string &name) const
Comparison operator for name.
XmpCategory xmpCategory_
Category (internal or external)
Definition: properties.hpp:53
const char * xmpValueType_
XMP value type (for info only)
Definition: properties.hpp:51
TypeId typeId_
Exiv2 default type for the property.
Definition: properties.hpp:52