198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams/*
298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Copyright (C) 2012 The Android Open Source Project
398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams *
498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Licensed under the Apache License, Version 2.0 (the "License");
598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * you may not use this file except in compliance with the License.
698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * You may obtain a copy of the License at
798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams *
898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams *      http://www.apache.org/licenses/LICENSE-2.0
998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams *
1098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Unless required by applicable law or agreed to in writing, software
1198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * distributed under the License is distributed on an "AS IS" BASIS,
1298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * See the License for the specific language governing permissions and
1498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * limitations under the License.
1598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams */
1698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
1798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Samspackage android.support.v8.renderscript;
1898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
198b8070ded084da1f0a34f3ed2c54e501d2e56f6cTim Murrayimport android.os.SystemProperties;
200f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hinesimport android.support.v8.renderscript.RenderScript;
2198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
2298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams/**
2398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams * Utility class for packing arguments and structures from Android system objects to
247d435ae5ba100be5710b685653cc351cab159c11Stephen Hines * RenderScript objects.
257d435ae5ba100be5710b685653cc351cab159c11Stephen Hines *
267d435ae5ba100be5710b685653cc351cab159c11Stephen Hines * This class is only intended to be used to support the
277d435ae5ba100be5710b685653cc351cab159c11Stephen Hines * reflected code generated by the RS tool chain.  It should not
287d435ae5ba100be5710b685653cc351cab159c11Stephen Hines * be called directly.
2998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams *
3098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams **/
3198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Samspublic class FieldPacker {
32ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray    private android.renderscript.FieldPacker mN;
33ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray
3498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public FieldPacker(int len) {
3598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mPos = 0;
3698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mLen = len;
3798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData = new byte[len];
380f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
39ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN = new android.renderscript.FieldPacker(len);
40ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
4198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
4298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
4398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void align(int v) {
440f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
45ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.align(v);
46ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
47ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
4898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        if ((v <= 0) || ((v & (v - 1)) != 0)) {
4998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            throw new RSIllegalArgumentException("argument must be a non-negative non-zero power of 2: " + v);
5098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
5198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
5298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        while ((mPos & (v - 1)) != 0) {
5398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            mData[mPos++] = 0;
5498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
5598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
5698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
5798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void reset() {
580f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
59ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.reset();
60ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
61ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
6298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mPos = 0;
6398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
6498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void reset(int i) {
650f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
66ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.reset(i);
67ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
68ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
6998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        if ((i < 0) || (i >= mLen)) {
7098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            throw new RSIllegalArgumentException("out of range argument: " + i);
7198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
7298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mPos = i;
7398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
7498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
7598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void skip(int i) {
760f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
77ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.skip(i);
78ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
79ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
8098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        int res = mPos + i;
8198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        if ((res < 0) || (res > mLen)) {
8298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            throw new RSIllegalArgumentException("out of range argument: " + i);
8398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
8498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mPos = res;
8598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
8698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
8798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI8(byte v) {
880f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
89ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addI8(v);
90ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
91ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
9298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = v;
9398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
9498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
9598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI16(short v) {
960f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
97ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addI16(v);
98ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
99ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
10098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        align(2);
10198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)(v & 0xff);
10298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)(v >> 8);
10398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
10498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
10598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI32(int v) {
1060f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
107ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addI32(v);
108ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
109ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
11098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        align(4);
11198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)(v & 0xff);
11298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 8) & 0xff);
11398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 16) & 0xff);
11498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 24) & 0xff);
11598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
11698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
11798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI64(long v) {
1180f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
119ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addI64(v);
120ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
121ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
12298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        align(8);
12398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)(v & 0xff);
12498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 8) & 0xff);
12598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 16) & 0xff);
12698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 24) & 0xff);
12798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 32) & 0xff);
12898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 40) & 0xff);
12998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 48) & 0xff);
13098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 56) & 0xff);
13198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
13298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
13398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU8(short v) {
1340f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
135ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addU8(v);
136ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
137ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
13898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        if ((v < 0) || (v > 0xff)) {
13998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            throw new IllegalArgumentException("Saving value out of range for type");
14098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
14198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)v;
14298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
14398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
14498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU16(int v) {
1450f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
146ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addU16(v);
147ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
148ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
14998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        if ((v < 0) || (v > 0xffff)) {
15098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            android.util.Log.e("rs", "FieldPacker.addU16( " + v + " )");
15198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            throw new IllegalArgumentException("Saving value out of range for type");
15298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
15398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        align(2);
15498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)(v & 0xff);
15598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)(v >> 8);
15698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
15798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
15898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU32(long v) {
1590f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
160ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addU32(v);
161ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
162ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
16398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        if ((v < 0) || (v > 0xffffffffL)) {
16498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            android.util.Log.e("rs", "FieldPacker.addU32( " + v + " )");
16598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            throw new IllegalArgumentException("Saving value out of range for type");
16698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
16798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        align(4);
16898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)(v & 0xff);
16998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 8) & 0xff);
17098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 16) & 0xff);
17198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 24) & 0xff);
17298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
17398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
17498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU64(long v) {
1750f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
176ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addU64(v);
177ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
178ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
17998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        if (v < 0) {
18098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            android.util.Log.e("rs", "FieldPacker.addU64( " + v + " )");
18198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            throw new IllegalArgumentException("Saving value out of range for type");
18298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
18398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        align(8);
18498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)(v & 0xff);
18598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 8) & 0xff);
18698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 16) & 0xff);
18798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 24) & 0xff);
18898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 32) & 0xff);
18998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 40) & 0xff);
19098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 48) & 0xff);
19198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        mData[mPos++] = (byte)((v >> 56) & 0xff);
19298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
19398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
19498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addF32(float v) {
1950f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
196ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addF32(v);
197ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
198ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
19998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI32(Float.floatToRawIntBits(v));
20098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
20198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
20298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addF64(double v) {
2030f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
204ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addF64(v);
205ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
206ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
20798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI64(Double.doubleToRawLongBits(v));
20898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
20998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
21098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addObj(BaseObj obj) {
2110f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
212f54361ff127dd99157d2e53b1e73b77682fa8d13Jason Sams            if (obj != null) {
213f54361ff127dd99157d2e53b1e73b77682fa8d13Jason Sams                mN.addObj(obj.getNObj());
214f54361ff127dd99157d2e53b1e73b77682fa8d13Jason Sams            } else {
215f54361ff127dd99157d2e53b1e73b77682fa8d13Jason Sams                mN.addObj(null);
216f54361ff127dd99157d2e53b1e73b77682fa8d13Jason Sams            }
217ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
218ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
21998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        if (obj != null) {
22098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            addI32(obj.getID(null));
22198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        } else {
22298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            addI32(0);
22398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
22498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
22598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
22698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addF32(Float2 v) {
2270f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
228ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addF32(new android.renderscript.Float2(v.x, v.y));
229ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
230ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
23198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF32(v.x);
23298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF32(v.y);
23398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
23498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addF32(Float3 v) {
2350f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
236ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addF32(new android.renderscript.Float3(v.x, v.y, v.z));
237ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
238ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
23998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF32(v.x);
24098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF32(v.y);
24198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF32(v.z);
24298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
24398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addF32(Float4 v) {
2440f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
245ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addF32(new android.renderscript.Float4(v.x, v.y, v.z, v.w));
246ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
247ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
24898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF32(v.x);
24998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF32(v.y);
25098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF32(v.z);
25198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF32(v.w);
25298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
25398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
25498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addF64(Double2 v) {
2550f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
256ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addF64(new android.renderscript.Double2(v.x, v.y));
257ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
258ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
25998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF64(v.x);
26098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF64(v.y);
26198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
26298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addF64(Double3 v) {
2630f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
264ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addF64(new android.renderscript.Double3(v.x, v.y, v.z));
265ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
266ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
26798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF64(v.x);
26898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF64(v.y);
26998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF64(v.z);
27098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
27198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addF64(Double4 v) {
2720f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
273ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addF64(new android.renderscript.Double4(v.x, v.y, v.z, v.w));
274ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
275ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
27698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF64(v.x);
27798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF64(v.y);
27898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF64(v.z);
27998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addF64(v.w);
28098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
28198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
28298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI8(Byte2 v) {
2830f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
284ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addI8(new android.renderscript.Byte2(v.x, v.y));
285ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
286ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
28798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI8(v.x);
28898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI8(v.y);
28998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
29098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI8(Byte3 v) {
2910f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
292ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addI8(new android.renderscript.Byte3(v.x, v.y, v.z));
293ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
294ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
29598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI8(v.x);
29698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI8(v.y);
29798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI8(v.z);
29898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
29998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI8(Byte4 v) {
3000f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
301ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addI8(new android.renderscript.Byte4(v.x, v.y, v.z, v.w));
302ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
303ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
30498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI8(v.x);
30598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI8(v.y);
30698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI8(v.z);
30798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI8(v.w);
30898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
30998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
31098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU8(Short2 v) {
3110f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
312ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addU8(new android.renderscript.Short2(v.x, v.y));
313ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
314ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
31598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU8(v.x);
31698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU8(v.y);
31798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
31898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU8(Short3 v) {
3190f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
320ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addU8(new android.renderscript.Short3(v.x, v.y, v.z));
321ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
322ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
32398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU8(v.x);
32498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU8(v.y);
32598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU8(v.z);
32698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
32798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU8(Short4 v) {
3280f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
329ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addU8(new android.renderscript.Short4(v.x, v.y, v.z, v.w));
330ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
331ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
33298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU8(v.x);
33398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU8(v.y);
33498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU8(v.z);
33598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU8(v.w);
33698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
33798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
33898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI16(Short2 v) {
3390f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
340ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addI16(new android.renderscript.Short2(v.x, v.y));
341ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
342ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
34398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI16(v.x);
34498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI16(v.y);
34598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
34698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI16(Short3 v) {
3470f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
348ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addI16(new android.renderscript.Short3(v.x, v.y, v.z));
349ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
350ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
35198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI16(v.x);
35298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI16(v.y);
35398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI16(v.z);
35498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
35598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI16(Short4 v) {
3560f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
357ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addI16(new android.renderscript.Short4(v.x, v.y, v.z, v.w));
358ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
359ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
36098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI16(v.x);
36198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI16(v.y);
36298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI16(v.z);
36398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI16(v.w);
36498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
36598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
36698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU16(Int2 v) {
3670f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
368ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addU16(new android.renderscript.Int2(v.x, v.y));
369ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
370ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
37198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU16(v.x);
37298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU16(v.y);
37398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
37498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU16(Int3 v) {
3750f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
376ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addU16(new android.renderscript.Int3(v.x, v.y, v.z));
377ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
378ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
37998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU16(v.x);
38098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU16(v.y);
38198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU16(v.z);
38298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
38398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU16(Int4 v) {
3840f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
385ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addU16(new android.renderscript.Int4(v.x, v.y, v.z, v.w));
386ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
387ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
38898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU16(v.x);
38998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU16(v.y);
39098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU16(v.z);
39198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU16(v.w);
39298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
39398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
39498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI32(Int2 v) {
3950f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
396ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addI32(new android.renderscript.Int2(v.x, v.y));
397ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
398ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
39998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI32(v.x);
40098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI32(v.y);
40198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
40298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI32(Int3 v) {
4030f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
404ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addI32(new android.renderscript.Int3(v.x, v.y, v.z));
405ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
406ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
40798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI32(v.x);
40898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI32(v.y);
40998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI32(v.z);
41098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
41198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI32(Int4 v) {
4120f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
413ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addI32(new android.renderscript.Int4(v.x, v.y, v.z, v.w));
414ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
415ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
41698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI32(v.x);
41798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI32(v.y);
41898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI32(v.z);
41998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI32(v.w);
42098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
42198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
42298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU32(Long2 v) {
4230f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
424ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addU32(new android.renderscript.Long2(v.x, v.y));
425ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
426ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
42798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU32(v.x);
42898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU32(v.y);
42998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
43098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU32(Long3 v) {
4310f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
432ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addU32(new android.renderscript.Long3(v.x, v.y, v.z));
433ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
434ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
43598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU32(v.x);
43698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU32(v.y);
43798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU32(v.z);
43898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
43998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU32(Long4 v) {
4400f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
441ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addU32(new android.renderscript.Long4(v.x, v.y, v.z, v.w));
442ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
443ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
44498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU32(v.x);
44598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU32(v.y);
44698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU32(v.z);
44798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU32(v.w);
44898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
44998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
45098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI64(Long2 v) {
4510f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
452ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addI64(new android.renderscript.Long2(v.x, v.y));
453ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
454ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
45598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI64(v.x);
45698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI64(v.y);
45798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
45898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI64(Long3 v) {
4590f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
460ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addI64(new android.renderscript.Long3(v.x, v.y, v.z));
461ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
462ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
46398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI64(v.x);
46498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI64(v.y);
46598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI64(v.z);
46698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
46798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addI64(Long4 v) {
4680f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
469ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addI64(new android.renderscript.Long4(v.x, v.y, v.z, v.w));
470ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
471ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
47298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI64(v.x);
47398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI64(v.y);
47498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI64(v.z);
47598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI64(v.w);
47698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
47798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
47898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU64(Long2 v) {
4790f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
480ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addU64(new android.renderscript.Long2(v.x, v.y));
481ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
482ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
48398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU64(v.x);
48498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU64(v.y);
48598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
48698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU64(Long3 v) {
4870f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
488ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addU64(new android.renderscript.Long3(v.x, v.y, v.z));
489ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
490ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
49198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU64(v.x);
49298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU64(v.y);
49398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU64(v.z);
49498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
49598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addU64(Long4 v) {
4960f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
497ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addU64(new android.renderscript.Long4(v.x, v.y, v.z, v.w));
498ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
499ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
50098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU64(v.x);
50198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU64(v.y);
50298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU64(v.z);
50398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addU64(v.w);
50498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
50598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
50698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addMatrix(Matrix4f v) {
5070f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
508ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addMatrix(new android.renderscript.Matrix4f(v.getArray()));
509ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
510ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
51198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        for (int i=0; i < v.mMat.length; i++) {
51298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            addF32(v.mMat[i]);
51398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
51498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
51598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
51698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addMatrix(Matrix3f v) {
5170f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
518ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addMatrix(new android.renderscript.Matrix3f(v.getArray()));
519ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
520ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
52198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        for (int i=0; i < v.mMat.length; i++) {
52298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            addF32(v.mMat[i]);
52398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
52498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
52598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
52698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addMatrix(Matrix2f v) {
5270f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
528ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addMatrix(new android.renderscript.Matrix2f(v.getArray()));
529ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
530ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
53198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        for (int i=0; i < v.mMat.length; i++) {
53298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams            addF32(v.mMat[i]);
53398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        }
53498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
53598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
53698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public void addBoolean(boolean v) {
5370f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
538ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            mN.addBoolean(v);
539ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return;
540ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
54198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        addI8((byte)(v ? 1 : 0));
54298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
54398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
54498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    public final byte[] getData() {
5450f5bae87e2e3e3b0e66803122b5c4c7dd36d43ddStephen Hines        if (RenderScript.shouldThunk()) {
546ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray            return mN.getData();
547ce8b0e674c93035013d1c33aaabc9bb6ceffde0fTim Murray        }
54898a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams        return mData;
54998a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    }
55098a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
55198a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    private final byte mData[];
55298a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    private int mPos;
55398a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams    private int mLen;
55498a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
55598a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams}
55698a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
55798a281354fe06d1f970d0521c9a08d9eb0aa1a45Jason Sams
558