Element HAL sturct, script side getters

Change-Id: If98dd4c22bce58dca2c9739c8aee935a2dd0b493
diff --git a/rsElement.cpp b/rsElement.cpp
index 56c31b6..8b60701 100644
--- a/rsElement.cpp
+++ b/rsElement.cpp
@@ -47,6 +47,12 @@
     mFields = NULL;
     mFieldCount = 0;
     mHasReference = false;
+
+    delete [] mHal.state.fields;
+    delete [] mHal.state.fieldArraySizes;
+    delete [] mHal.state.fieldNames;
+    delete [] mHal.state.fieldNameLengths;
+    delete [] mHal.state.fieldOffsetBytes;
 }
 
 size_t Element::getSizeBits() const {
@@ -157,13 +163,26 @@
 }
 
 void Element::compute() {
+    mHal.state.dataType = mComponent.getType();
+    mHal.state.dataKind = mComponent.getKind();
+    mHal.state.vectorSize = mComponent.getVectorSize();
+
     if (mFieldCount == 0) {
         mBits = mComponent.getBits();
         mBitsUnpadded = mComponent.getBitsUnpadded();
         mHasReference = mComponent.isReference();
+
+        mHal.state.elementSizeBytes = getSizeBytes();
         return;
     }
 
+    mHal.state.fields = new const Element*[mFieldCount];
+    mHal.state.fieldArraySizes = new uint32_t[mFieldCount];
+    mHal.state.fieldNames = new const char*[mFieldCount];
+    mHal.state.fieldNameLengths = new uint32_t[mFieldCount];
+    mHal.state.fieldOffsetBytes = new uint32_t[mFieldCount];
+    mHal.state.fieldsCount = mFieldCount;
+
     size_t bits = 0;
     size_t bitsUnpadded = 0;
     for (size_t ct=0; ct < mFieldCount; ct++) {
@@ -175,8 +194,15 @@
         if (mFields[ct].e->mHasReference) {
             mHasReference = true;
         }
+
+        mHal.state.fields[ct] = mFields[ct].e.get();
+        mHal.state.fieldArraySizes[ct] = mFields[ct].arraySize;
+        mHal.state.fieldNames[ct] = mFields[ct].name.string();
+        mHal.state.fieldNameLengths[ct] = mFields[ct].name.length();
+        mHal.state.fieldOffsetBytes[ct] = mFields[ct].offsetBits >> 3;
     }
 
+    mHal.state.elementSizeBytes = getSizeBytes();
 }
 
 ObjectBaseRef<const Element> Element::createRef(Context *rsc, RsDataType dt, RsDataKind dk,