| XMP Toolkit SDK 6.0.0

IMetadata.h
Go to the documentation of this file.
1 #ifndef __IMetadata_h__
2 #define __IMetadata_h__ 1
3
4 // =================================================================================================
5 // Copyright Adobe
6 // Copyright 2014 Adobe
7 // All Rights Reserved
8 //
9 // NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms
10 // of the Adobe license agreement accompanying it. If you have received this file from a source other
11 // than Adobe, then your use, modification, or distribution of it requires the prior written permission
12 // of Adobe.
13 // =================================================================================================
14
15 #include "XMPCore/Interfaces/IStructureNode.h"
16
17 namespace AdobeXMPCore {
18
25
26 class XMP_PUBLIC IMetadata_v1
27 : public virtual IStructureNode_v1
28 {
29 public:
31
36 virtual spcIUTF8String APICALL GetAboutURI() const = 0;
37
43 virtual void APICALL SetAboutURI( const char * uri, sizet uriLength ) __NOTHROW__ = 0;
44
52 virtual void APICALL EnableFeature( const char * key, sizet keyLength ) const __NOTHROW__ = 0;
53
59 virtual void APICALL DisableFeature( const char * key, sizet keyLength ) const __NOTHROW__ = 0;
60
62
68 virtual pIMetadata APICALL GetActualIMetadata() __NOTHROW__ = 0;
69 XMP_PRIVATE pcIMetadata GetActualIMetadata() const __NOTHROW__ {
70 return const_cast< IMetadata_v1 * >( this )->GetActualIMetadata();
71 }
74
80 virtual AdobeXMPCore_Int::pIMetadata_I APICALL GetIMetadata_I() __NOTHROW__ = 0;
81
82 XMP_PRIVATE AdobeXMPCore_Int::pcIMetadata_I GetIMetadata_I() const __NOTHROW__ {
83 return const_cast< IMetadata_v1 * >( this )->GetIMetadata_I();
84 }
87
94 XMP_PRIVATE static spIMetadata MakeShared( pIMetadata_base ptr );
95 XMP_PRIVATE static spcIMetadata MakeShared( pcIMetadata_base ptr ) {
96 return MakeShared( const_cast< pIMetadata_base >( ptr ) );
97 }
100
105 XMP_PRIVATE static uint64 GetInterfaceID() { return kIMetadataID; }
106
111 XMP_PRIVATE static uint32 GetInterfaceVersion() { return 1; }
113
114 // static factory functions
115
120 XMP_PRIVATE static spIMetadata CreateMetadata();
121
122 protected:
126 virtual ~IMetadata_v1() __NOTHROW__ {}
127
129 using INode_v1::GetParent;
130 using INode_v1::GetNameSpace;
131 using INode_v1::SetNameSpace;
132 using INode_v1::GetName;
133 using INode_v1::SetName;
134
136 virtual pcIUTF8String_base APICALL getAboutURI( pcIError_base & error ) const __NOTHROW__ = 0;
137
138 #ifdef FRIEND_CLASS_DECLARATION
139 FRIEND_CLASS_DECLARATION();
140 #endif
141 REQ_FRIEND_CLASS_DECLARATION();
143
144 };
145 }
146
147 #endif // __IMetadata_h__
AdobeXMPCore::kIMetadataID
static const uint64 kIMetadataID(0x634d657461646174)
AdobeXMPCore::INode_v1::GetNameSpace
virtual spcIUTF8String APICALL GetNameSpace() const =0
Gets the name space of the node.
XMP_PRIVATE
#define XMP_PRIVATE
Definition: XMP_Environment.h:222
__NOTHROW__
#define __NOTHROW__
Definition: XMPCommonDefines.h:147
XMP_PUBLIC
#define XMP_PUBLIC
Definition: XMP_Environment.h:221
AdobeXMPCore::spIMetadata
shared_ptr< IMetadata > spIMetadata
Definition: XMPCoreFwdDeclarations.h:139
AdobeXMPCore::spcIMetadata
shared_ptr< const IMetadata > spcIMetadata
Definition: XMPCoreFwdDeclarations.h:140
AdobeXMPCommon::pcIUTF8String_base
const typedef IUTF8String_v1 * pcIUTF8String_base
Definition: XMPCommonFwdDeclarations.h:75
AdobeXMPCommon::spcIUTF8String
shared_ptr< const IUTF8String > spcIUTF8String
Definition: XMPCommonFwdDeclarations.h:80
AdobeXMPCore::IStructureNode_v1
Version1 of the interface that represents a structure Node of XMP DOM.
Definition: IStructureNode.h:25
AdobeXMPCore::INode_v1::GetName
virtual spcIUTF8String APICALL GetName() const =0
Gets the local name of the node.
AdobeXMPCore
Definition: IArrayNode.h:18
AdobeXMPCore::INode_v1::GetParent
XMP_PRIVATE spcINode GetParent() const
Gets the parent node of the node.
Definition: INode.h:75
AdobeXMPCommon::uint32
XMP_Uns32 uint32
Definition: XMPCommonDefines.h:174
AdobeXMPCore::pcIMetadata_base
const typedef IMetadata_v1 * pcIMetadata_base
Definition: XMPCoreFwdDeclarations.h:135
AdobeXMPCommon::sizet
uint32 sizet
Definition: XMPCommonDefines.h:176
AdobeXMPCore::IMetadata_v1::~IMetadata_v1
virtual ~IMetadata_v1() __NOTHROW__
Definition: IMetadata.h:126
REQ_FRIEND_CLASS_DECLARATION
#define REQ_FRIEND_CLASS_DECLARATION()
Definition: XMPCommonDefines.h:137
AdobeXMPCore_Int::pIMetadata_I
IMetadata_I * pIMetadata_I
Definition: XMPCoreFwdDeclarations.h:281
AdobeXMPCore::pIMetadata
IMetadata * pIMetadata
Definition: XMPCoreFwdDeclarations.h:137
AdobeXMPCore::INode_v1::SetName
virtual void APICALL SetName(const char *name, sizet nameLength)=0
Changes the local name of the node.
AdobeXMPCore::IMetadata_v1
Version1 of the interface that represents the whole xmp metadata for an asset.
Definition: IMetadata.h:26
AdobeXMPCore::pcIMetadata
const typedef IMetadata * pcIMetadata
Definition: XMPCoreFwdDeclarations.h:138
AdobeXMPCore::INode_v1::SetNameSpace
virtual void APICALL SetNameSpace(const char *nameSpace, sizet nameSpaceLength)=0
Changes the name space of the node.
AdobeXMPCommon::pcIError_base
const typedef IError_v1 * pcIError_base
Definition: XMPCommonFwdDeclarations.h:64
IStructureNode.h
AdobeXMPCommon::uint64
XMP_Uns64 uint64
Definition: XMPCommonDefines.h:172
AdobeXMPCore_Int::pcIMetadata_I
const typedef IMetadata_I * pcIMetadata_I
Definition: XMPCoreFwdDeclarations.h:283