XMP Toolkit SDK  6.0.0
IDOMImplementationRegistry.h
Go to the documentation of this file.
1 #ifndef IDOMImplementationRegistry_h__
2 #define IDOMImplementationRegistry_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 
18 
19 namespace AdobeXMPCore {
20 
32  : public virtual ISharedObject
33  , public virtual IVersionable
34  {
35  public:
36 
44  virtual spIDOMParser APICALL GetParser( const char * key ) const = 0;
45 
53  virtual spIDOMSerializer APICALL GetSerializer( const char * key ) const = 0;
54 
61  virtual bool APICALL RegisterParser( const char * key, pIClientDOMParser_base parser ) = 0;
62 
69  virtual bool APICALL RegisterSerializer( const char * key, pIClientDOMSerializer_base serializer ) = 0;
70 
75  XMP_PRIVATE static spIDOMImplementationRegistry GetDOMImplementationRegistry();
76 
79 
85  virtual pIDOMImplementationRegistry APICALL GetActualIDOMImplementationRegistry() __NOTHROW__ = 0;
86  XMP_PRIVATE pcIDOMImplementationRegistry GetActualIDOMImplementationRegistry() const __NOTHROW__ {
87  return const_cast< IDOMImplementationRegistry_v1 * >( this )->GetActualIDOMImplementationRegistry();
88  }
91 
97  virtual AdobeXMPCore_Int::pIDOMImplementationRegistry_I APICALL GetIDOMImplementationRegistry_I() __NOTHROW__ = 0;
98 
99  XMP_PRIVATE AdobeXMPCore_Int::pcIDOMImplementationRegistry_I GetIDOMImplementationRegistry_I() const __NOTHROW__ {
100  return const_cast< IDOMImplementationRegistry_v1 * >( this )->GetIDOMImplementationRegistry_I();
101  }
104 
113  return MakeShared( const_cast< pIDOMImplementationRegistry_base >( ptr ) );
114  }
117 
122  XMP_PRIVATE static uint64 GetInterfaceID() { return kIDOMImplementationRegistryID; }
123 
128  XMP_PRIVATE static uint32 GetInterfaceVersion() { return 1; }
130 
131  protected:
136 
138  virtual pIDOMParser_base APICALL getParser( const char * key, pcIError_base & error ) const __NOTHROW__ = 0;
139  virtual pIDOMSerializer_base APICALL getSerializer( const char * key, pcIError_base & error ) const __NOTHROW__ = 0;
140  virtual uint32 APICALL registerParser( const char * key, pIClientDOMParser_base parser, pcIError_base & error ) __NOTHROW__ = 0;
141  virtual uint32 APICALL registerSerializer( const char * key, pIClientDOMSerializer_base serializer, pcIError_base & error ) __NOTHROW__= 0;
142 
143  #ifdef FRIEND_CLASS_DECLARATION
144  FRIEND_CLASS_DECLARATION();
145  #endif
148 
149  };
150 }
151 
152 #endif // IDOMImplementationRegistry_h__
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::IDOMSerializer_v1
Version1 of the interface that represents an object that can serialize an XMP Data Model to a buffer....
Definition: IDOMSerializer.h:25
AdobeXMPCore::spIDOMParser
shared_ptr< IDOMParser > spIDOMParser
Definition: XMPCoreFwdDeclarations.h:169
AdobeXMPCore::kIDOMImplementationRegistryID
static const uint64 kIDOMImplementationRegistryID(0x63444f4d52677374)
ISharedObject.h
AdobeXMPCore::IDOMImplementationRegistry_v1
Version1 of the interface that serves as a database/registry of all the parsers and serializers avail...
Definition: IDOMImplementationRegistry.h:31
AdobeXMPCore::IClientDOMSerializer_v1
Version 1 of the interface that supports serializing by the client supplied serializer of the XMP Dat...
Definition: IClientDOMSerializer.h:27
AdobeXMPCore_Int::pcIDOMImplementationRegistry_I
const typedef IDOMImplementationRegistry_I * pcIDOMImplementationRegistry_I
Definition: XMPCoreFwdDeclarations.h:308
AdobeXMPCore::IClientDOMParser_v1
Version 1 of the interface that supports parsing by the client supplied parser of the XMP Data Model.
Definition: IClientDOMParser.h:24
AdobeXMPCore
Definition: IArrayNode.h:18
AdobeXMPCore::spIDOMImplementationRegistry
shared_ptr< IDOMImplementationRegistry > spIDOMImplementationRegistry
Definition: XMPCoreFwdDeclarations.h:193
AdobeXMPCommon::uint32
XMP_Uns32 uint32
Definition: XMPCommonDefines.h:174
XMPCoreFwdDeclarations.h
AdobeXMPCore::pcIDOMImplementationRegistry
const typedef IDOMImplementationRegistry * pcIDOMImplementationRegistry
Definition: XMPCoreFwdDeclarations.h:192
AdobeXMPCommon::IVersionable
Interface that serves as the base interface for all the externally exposed interfaces which needs to ...
Definition: IVersionable.h:30
REQ_FRIEND_CLASS_DECLARATION
#define REQ_FRIEND_CLASS_DECLARATION()
Definition: XMPCommonDefines.h:137
AdobeXMPCore::IDOMParser_v1
Version 1 of the interface that supports parsing of the XMP Data Model.
Definition: IDOMParser.h:26
AdobeXMPCore::IDOMImplementationRegistry_v1::~IDOMImplementationRegistry_v1
virtual ~IDOMImplementationRegistry_v1() __NOTHROW__
Definition: IDOMImplementationRegistry.h:135
AdobeXMPCore::pIDOMImplementationRegistry
IDOMImplementationRegistry * pIDOMImplementationRegistry
Definition: XMPCoreFwdDeclarations.h:191
IVersionable.h
AdobeXMPCore::pcIDOMImplementationRegistry_base
const typedef IDOMImplementationRegistry_v1 * pcIDOMImplementationRegistry_base
Definition: XMPCoreFwdDeclarations.h:189
AdobeXMPCore::spcIDOMImplementationRegistry
shared_ptr< const IDOMImplementationRegistry > spcIDOMImplementationRegistry
Definition: XMPCoreFwdDeclarations.h:194
AdobeXMPCommon::pcIError_base
const typedef IError_v1 * pcIError_base
Definition: XMPCommonFwdDeclarations.h:64
AdobeXMPCore_Int::pIDOMImplementationRegistry_I
IDOMImplementationRegistry_I * pIDOMImplementationRegistry_I
Definition: XMPCoreFwdDeclarations.h:306
AdobeXMPCore::spIDOMSerializer
shared_ptr< IDOMSerializer > spIDOMSerializer
Definition: XMPCoreFwdDeclarations.h:181
AdobeXMPCommon::uint64
XMP_Uns64 uint64
Definition: XMPCommonDefines.h:172
AdobeXMPCommon::ISharedObject
Interface that serves as the base interface of all the externally exposed interfaces.
Definition: ISharedObject.h:29