3 #ifndef PROPERTIES_HPP_
4 #define PROPERTIES_HPP_
7 #include "exiv2lib_export.h"
12 #include "datasets.hpp"
30 bool operator==(
const std::string& name)
const;
53 bool operator==(
const Ns& ns)
const;
55 bool operator==(
const Prefix& prefix)
const;
66 static const XmpNsInfo* nsInfoUnsafe(
const std::string& prefix);
67 static void unregisterNsUnsafe(
const std::string& ns);
77 static const char* propertyTitle(
const XmpKey& key);
84 static const char* propertyDesc(
const XmpKey& key);
111 static std::string ns(
const std::string& prefix);
119 static const char* nsDesc(
const std::string& prefix);
135 static const XmpNsInfo* nsInfo(
const std::string& prefix);
143 static std::string prefix(
const std::string& ns);
145 static void printProperties(std::ostream& os,
const std::string& prefix);
148 static std::ostream& printProperty(std::ostream& os,
const std::string& key,
const Value& value);
157 static void registerNs(
const std::string& ns,
const std::string& prefix);
166 static void unregisterNs(
const std::string& ns);
186 static void unregisterNs();
222 explicit XmpKey(
const std::string& key);
232 XmpKey(
const std::string& prefix,
const std::string& property);
247 [[nodiscard]] std::string key()
const override;
248 [[nodiscard]]
const char* familyName()
const override;
253 [[nodiscard]] std::string
groupName()
const override;
254 [[nodiscard]] std::string tagName()
const override;
255 [[nodiscard]] std::string tagLabel()
const override;
256 [[nodiscard]] std::string tagDesc()
const override;
258 [[nodiscard]] uint16_t tag()
const override;
264 [[nodiscard]] std::string ns()
const;
269 [[nodiscard]]
XmpKey* clone_()
const override;
273 std::unique_ptr<Impl> p_;
285 #endif // #ifndef PROPERTIES_HPP_
static std::mutex mutex_
Lock to be used while modifying properties.
Definition: properties.hpp:176
const char * name_
Property name.
Definition: properties.hpp:32
std::map< std::string, XmpNsInfo > NsRegistry
Type for the namespace registry.
Definition: properties.hpp:188
std::string prefix_
The prefix string.
Definition: properties.hpp:45
TypeId
Exiv2 value type identifiers.
Definition: types.hpp:70
const char * ns_
Namespace.
Definition: properties.hpp:57
For comparison with prefix.
Definition: properties.hpp:43
const char * xmpValueType_
XMP value type (for info only)
Definition: properties.hpp:34
std::map< std::string, std::string > Dictionary
typedef for string:string map
Definition: datasets.hpp:312
const char * title_
Property title or label.
Definition: properties.hpp:33
Abstract base class defining the Key of a metadatum. Keys are used to identify and group metadata...
Definition: metadatum.hpp:26
std::string ns_
The namespace string.
Definition: properties.hpp:50
Structure mapping XMP namespaces and (preferred) prefixes.
Definition: properties.hpp:41
static NsRegistry nsRegistry_
Namespace registry.
Definition: properties.hpp:195
XMP property reference, implemented as a static class.
Definition: properties.hpp:64
Concrete keys for XMP metadata.
Definition: properties.hpp:207
const XmpPropertyInfo * xmpPropertyInfo_
List of known properties.
Definition: properties.hpp:59
XmpCategory
Category of an XMP property.
Definition: properties.hpp:25
const char * groupName(IfdId ifdId)
Return the group name for a group id.
Definition: tags_int.cpp:2477
XmpCategory xmpCategory_
Category (internal or external)
Definition: properties.hpp:36
Information about one XMP property.
Definition: properties.hpp:28
Common interface for all types of values used with metadata.
Definition: value.hpp:33
std::unique_ptr< Key > UniquePtr
Shortcut for a Key auto pointer.
Definition: metadatum.hpp:29
Class CrwImage to access Canon CRW images. References: The Canon RAW (CRW) File Format by Phil Harv...
Definition: asfvideo.hpp:15
EXIV2API std::ostream & operator<<(std::ostream &os, const DataSet &dataSet)
Output operator for dataSet.
Definition: datasets.cpp:590
const char * prefix_
(Preferred) prefix
Definition: properties.hpp:58
const char * desc_
Brief description of the namespace.
Definition: properties.hpp:60
TypeId typeId_
Exiv2 default type for the property.
Definition: properties.hpp:35
const char * desc_
Property description.
Definition: properties.hpp:37
For comparison with namespace.
Definition: properties.hpp:48