AAPT2: Add Inline Complex XML support
See: https://developer.android.com/guide/topics/resources/complex-xml-resources.html
Change-Id: I8274c85e25cabf90423141c228697e873167d136
diff --git a/tools/aapt2/io/Data.h b/tools/aapt2/io/Data.h
index 467e604..34eed63 100644
--- a/tools/aapt2/io/Data.h
+++ b/tools/aapt2/io/Data.h
@@ -17,9 +17,9 @@
#ifndef AAPT_IO_DATA_H
#define AAPT_IO_DATA_H
-#include <utils/FileMap.h>
-
+#include <android-base/macros.h>
#include <memory>
+#include <utils/FileMap.h>
namespace aapt {
namespace io {
@@ -35,6 +35,28 @@
virtual size_t size() const = 0;
};
+class DataSegment : public IData {
+public:
+ explicit DataSegment(std::unique_ptr<IData> data, size_t offset, size_t len) :
+ mData(std::move(data)), mOffset(offset), mLen(len) {
+ }
+
+ const void* data() const override {
+ return static_cast<const uint8_t*>(mData->data()) + mOffset;
+ }
+
+ size_t size() const override {
+ return mLen;
+ }
+
+private:
+ DISALLOW_COPY_AND_ASSIGN(DataSegment);
+
+ std::unique_ptr<IData> mData;
+ size_t mOffset;
+ size_t mLen;
+};
+
/**
* Implementation of IData that exposes a memory mapped file. The mmapped file is owned by this
* object.