summaryrefslogtreecommitdiff
path: root/XMPFiles/source/FormatSupport/IFF/IChunkContainer.h
diff options
context:
space:
mode:
Diffstat (limited to 'XMPFiles/source/FormatSupport/IFF/IChunkContainer.h')
-rw-r--r--XMPFiles/source/FormatSupport/IFF/IChunkContainer.h87
1 files changed, 87 insertions, 0 deletions
diff --git a/XMPFiles/source/FormatSupport/IFF/IChunkContainer.h b/XMPFiles/source/FormatSupport/IFF/IChunkContainer.h
new file mode 100644
index 0000000..04ad425
--- /dev/null
+++ b/XMPFiles/source/FormatSupport/IFF/IChunkContainer.h
@@ -0,0 +1,87 @@
+// =================================================================================================
+// ADOBE SYSTEMS INCORPORATED
+// Copyright 2010 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.
+// =================================================================================================
+
+#ifndef _IChunkContainer_h_
+#define _IChunkContainer_h_
+
+#include "public/include/XMP_Environment.h" // ! This must be the first include.
+
+namespace IFF_RIFF
+{
+
+/**
+ The interface IChunkContainer defines the access to child chunks of
+ an existing chunk.
+*/
+
+class Chunk;
+
+class IChunkContainer
+{
+public:
+ virtual ~IChunkContainer() {};
+
+ /**
+ * @return Returns the number children chunks.
+ */
+ virtual XMP_Uns32 numChildren() const = 0;
+
+ /**
+ * Returns a child node.
+ *
+ * @param pos position of the child node to return
+ * @return Returns the child node at the given position.
+ */
+ virtual Chunk* getChildAt( XMP_Uns32 pos ) const = 0;
+
+ /**
+ * Appends a child node at the end of the children list.
+ *
+ * @param node the new node
+ * @param adjustSizes adjust size&offset of chunk and parents
+ * @return Returns the added node.
+ */
+ virtual void appendChild( Chunk* node, XMP_Bool adjustSizes = true ) = 0;
+
+ /**
+ * Inserts a child node at a certain position.
+ *
+ * @param pos position in the children list to add the new node
+ * @param node the new node
+ * @return Returns the added node.
+ */
+ virtual void insertChildAt( XMP_Uns32 pos, Chunk* node ) = 0;
+
+ /**
+ * Removes a child node at a given position.
+ *
+ * @param pos position of the node to delete in the children list
+ *
+ * @return The removed chunk
+ */
+ virtual Chunk* removeChildAt( XMP_Uns32 pos ) = 0;
+
+ /**
+ * Remove child at the passed position and insert the new chunk
+ *
+ * @param pos Position of chunk that will be replaced
+ * @param chunk New chunk
+ *
+ * @return Replaced chunk
+ */
+ virtual Chunk* replaceChildAt( XMP_Uns32 pos, Chunk* node ) = 0;
+
+ /** creates a string representation of the chunk and its children.
+ */
+ virtual std::string toString( std::string tab = std::string() , XMP_Bool showOriginal = false ) = 0;
+};
+
+}
+
+#endif