Implement type collapsing for Elements and Types. Now if a user creates two or more identical objects we simply reuse the existing object rather than create a new one.
diff --git a/libs/rs/rsElement.h b/libs/rs/rsElement.h
index 777e8ee..02a1ca2 100644
--- a/libs/rs/rsElement.h
+++ b/libs/rs/rsElement.h
@@ -60,9 +60,9 @@
void dumpLOGV(const char *prefix) const;
- static Element * create(Context *rsc, RsDataType dt, RsDataKind dk,
+ static const Element * create(Context *rsc, RsDataType dt, RsDataKind dk,
bool isNorm, uint32_t vecSize);
- static Element * create(Context *rsc, size_t count, const Element **,
+ static const Element * create(Context *rsc, size_t count, const Element **,
const char **, const size_t * lengths);
protected:
@@ -89,6 +89,8 @@
ElementState();
~ElementState();
+ // Cache of all existing elements.
+ Vector<const Element *> mElements;
};