summaryrefslogtreecommitdiff
path: root/XMPCore/Interfaces/ICompositeNode_I.h
diff options
context:
space:
mode:
Diffstat (limited to 'XMPCore/Interfaces/ICompositeNode_I.h')
-rw-r--r--XMPCore/Interfaces/ICompositeNode_I.h73
1 files changed, 73 insertions, 0 deletions
diff --git a/XMPCore/Interfaces/ICompositeNode_I.h b/XMPCore/Interfaces/ICompositeNode_I.h
new file mode 100644
index 0000000..86b7558
--- /dev/null
+++ b/XMPCore/Interfaces/ICompositeNode_I.h
@@ -0,0 +1,73 @@
+#ifndef ICompositeNode_I_h__
+#define ICompositeNode_I_h__ 1
+
+// =================================================================================================
+// ADOBE SYSTEMS INCORPORATED
+// Copyright 2014 Adobe Systems Incorporated
+// All Rights Reserved
+//
+// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms
+// of the Adobe license agreement accompanying it.
+// =================================================================================================
+
+
+#include "XMPCore/XMPCoreFwdDeclarations_I.h"
+#include "XMPCore/Interfaces/ICompositeNode.h"
+#include "XMPCore/Interfaces/INode_I.h"
+
+namespace AdobeXMPCore_Int {
+
+#if XMP_WinBuild
+ #pragma warning( push )
+ #pragma warning( disable : 4250 )
+#endif
+
+ //!
+ //! \brief Version1 of the interface that serves as a base interface to all composite types of nodes in the XMP DOM ( like Arrays and Structures ).
+ //! \details Provides all the functions to get various properties of the composite node.
+ //! \attention Support multi threading through locks but can be enabled/disabled by the client. By default
+ //! every object created does not support multi-threading.
+ //!
+ class ICompositeNode_I
+ : public virtual ICompositeNode
+ , public virtual INode_I
+ {
+ public:
+
+ //!
+ //! return the version of the interface.
+ //! \return 32 bit unsigned integer representing the version of the interface.
+ //!
+ static uint32 GetInterfaceVersion() { return kInternalInterfaceVersionNumber; }
+
+ virtual pICompositeNode APICALL GetActualICompositeNode() __NOTHROW__ { return this; }
+ virtual pICompositeNode_I APICALL GetICompositeNode_I() __NOTHROW__ { return this; }
+
+ virtual pvoid APICALL GetInterfacePointer( uint64 interfaceID, uint32 interfaceVersion );
+
+ protected:
+ virtual ~ICompositeNode_I() __NOTHROW__ {}
+ pvoid APICALL GetInterfacePointerInternal( uint64 interfaceID, uint32 interfaceVersion, bool isTopLevel );
+
+ virtual uint32 APICALL getNodeTypeAtPath( pcIPath_base path, pcIError_base & error ) const __NOTHROW__;
+ virtual pINode_base APICALL getNodeAtPath( pcIPath_base path, pcIError_base & error ) __NOTHROW__;
+ virtual void APICALL appendNode( pINode_base node, pcIError_base & error ) __NOTHROW__;
+ virtual void APICALL insertNodeAtPath( pINode_base node, pcIPath_base path, pcIError_base & error ) __NOTHROW__;
+ virtual pINode_base APICALL replaceNodeAtPath( pINode_base node, pcIPath_base path, pcIError_base & error ) __NOTHROW__;
+ virtual pINode_base APICALL removeNodeAtPath( pcIPath_base path, pcIError_base & error ) __NOTHROW__;
+ virtual pINodeIterator_base APICALL iterator( pcIError_base & error ) __NOTHROW__;
+ virtual pvoid APICALL getInterfacePointer( uint64 interfaceID, uint32 interfaceVersion, pcIError_base & error ) __NOTHROW__;
+
+ #ifdef FRIEND_CLASS_DECLARATION
+ FRIEND_CLASS_DECLARATION();
+ #endif
+ REQ_FRIEND_CLASS_DECLARATION();
+ };
+
+#if XMP_WinBuild
+ #pragma warning( pop )
+#endif
+
+}
+
+#endif // ICompositeNode_I_h__