FieldPacker.java revision 032b2c2c8a3cf2c55f6f08557f2648d799766c4e
145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams/*
245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * Copyright (C) 2012 The Android Open Source Project
345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams *
445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * Licensed under the Apache License, Version 2.0 (the "License");
545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * you may not use this file except in compliance with the License.
645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * You may obtain a copy of the License at
745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams *
845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams *      http://www.apache.org/licenses/LICENSE-2.0
945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams *
1045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * Unless required by applicable law or agreed to in writing, software
1145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * distributed under the License is distributed on an "AS IS" BASIS,
1245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * See the License for the specific language governing permissions and
1445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * limitations under the License.
1545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams */
1645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
1745d443665f5ce7efa934706a89883f0cc87f3513Jason Samspackage android.support.v8.renderscript;
1845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
196a2a5e0e083881c7a7b78892c03b49eece99d9fcTim Murrayimport android.os.SystemProperties;
2045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
2145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams/**
2245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams * Utility class for packing arguments and structures from Android system objects to
23032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * RenderScript objects.
24032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines *
25032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * This class is only intended to be used to support the
26032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * reflected code generated by the RS tool chain.  It should not
27032b2c2c8a3cf2c55f6f08557f2648d799766c4eStephen Hines * be called directly.
2845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams *
2945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams **/
3045d443665f5ce7efa934706a89883f0cc87f3513Jason Samspublic class FieldPacker {
31baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray    private static int thunk = 0;
32baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray
33baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray    private android.renderscript.FieldPacker mN;
34baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray
35baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray    private boolean shouldThunk() {
36baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (thunk == 0) {
376a2a5e0e083881c7a7b78892c03b49eece99d9fcTim Murray            if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.JELLY_BEAN_MR1 ||
386a2a5e0e083881c7a7b78892c03b49eece99d9fcTim Murray                SystemProperties.getInt("debug.rs.forcenative", 0) != 0) {
396a2a5e0e083881c7a7b78892c03b49eece99d9fcTim Murray
40baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray                thunk = 1;
41baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            } else {
42baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray                thunk = -1;
43baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            }
44baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
45baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (thunk == 1) {
46baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return true;
47baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
48baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        return false;
49baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray    }
50baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray
5145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public FieldPacker(int len) {
5245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mPos = 0;
5345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mLen = len;
5445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData = new byte[len];
55baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
56baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN = new android.renderscript.FieldPacker(len);
57baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
5845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
5945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
6045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void align(int v) {
61baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
62baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.align(v);
63baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
64baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
6545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        if ((v <= 0) || ((v & (v - 1)) != 0)) {
6645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams            throw new RSIllegalArgumentException("argument must be a non-negative non-zero power of 2: " + v);
6745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        }
6845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
6945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        while ((mPos & (v - 1)) != 0) {
7045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams            mData[mPos++] = 0;
7145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        }
7245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
7345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
7445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void reset() {
75baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
76baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.reset();
77baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
78baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
7945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mPos = 0;
8045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
8145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void reset(int i) {
82baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
83baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.reset(i);
84baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
85baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
8645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        if ((i < 0) || (i >= mLen)) {
8745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams            throw new RSIllegalArgumentException("out of range argument: " + i);
8845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        }
8945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mPos = i;
9045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
9145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
9245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void skip(int i) {
93baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
94baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.skip(i);
95baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
96baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
9745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        int res = mPos + i;
9845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        if ((res < 0) || (res > mLen)) {
9945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams            throw new RSIllegalArgumentException("out of range argument: " + i);
10045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        }
10145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mPos = res;
10245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
10345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
10445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addI8(byte v) {
105baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
106baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addI8(v);
107baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
108baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
10945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = v;
11045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
11145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
11245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addI16(short v) {
113baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
114baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addI16(v);
115baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
116baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
11745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        align(2);
11845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)(v & 0xff);
11945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)(v >> 8);
12045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
12145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
12245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addI32(int v) {
123baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
124baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addI32(v);
125baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
126baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
12745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        align(4);
12845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)(v & 0xff);
12945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 8) & 0xff);
13045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 16) & 0xff);
13145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 24) & 0xff);
13245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
13345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
13445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addI64(long v) {
135baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
136baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addI64(v);
137baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
138baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
13945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        align(8);
14045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)(v & 0xff);
14145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 8) & 0xff);
14245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 16) & 0xff);
14345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 24) & 0xff);
14445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 32) & 0xff);
14545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 40) & 0xff);
14645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 48) & 0xff);
14745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 56) & 0xff);
14845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
14945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
15045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addU8(short v) {
151baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
152baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addU8(v);
153baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
154baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
15545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        if ((v < 0) || (v > 0xff)) {
15645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams            throw new IllegalArgumentException("Saving value out of range for type");
15745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        }
15845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)v;
15945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
16045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
16145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addU16(int v) {
162baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
163baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addU16(v);
164baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
165baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
16645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        if ((v < 0) || (v > 0xffff)) {
16745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams            android.util.Log.e("rs", "FieldPacker.addU16( " + v + " )");
16845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams            throw new IllegalArgumentException("Saving value out of range for type");
16945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        }
17045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        align(2);
17145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)(v & 0xff);
17245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)(v >> 8);
17345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
17445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
17545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addU32(long v) {
176baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
177baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addU32(v);
178baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
179baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
18045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        if ((v < 0) || (v > 0xffffffffL)) {
18145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams            android.util.Log.e("rs", "FieldPacker.addU32( " + v + " )");
18245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams            throw new IllegalArgumentException("Saving value out of range for type");
18345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        }
18445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        align(4);
18545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)(v & 0xff);
18645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 8) & 0xff);
18745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 16) & 0xff);
18845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 24) & 0xff);
18945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
19045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
19145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addU64(long v) {
192baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
193baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addU64(v);
194baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
195baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
19645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        if (v < 0) {
19745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams            android.util.Log.e("rs", "FieldPacker.addU64( " + v + " )");
19845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams            throw new IllegalArgumentException("Saving value out of range for type");
19945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        }
20045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        align(8);
20145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)(v & 0xff);
20245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 8) & 0xff);
20345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 16) & 0xff);
20445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 24) & 0xff);
20545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 32) & 0xff);
20645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 40) & 0xff);
20745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 48) & 0xff);
20845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        mData[mPos++] = (byte)((v >> 56) & 0xff);
20945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
21045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
21145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addF32(float v) {
212baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
213baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addF32(v);
214baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
215baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
21645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI32(Float.floatToRawIntBits(v));
21745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
21845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
21945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addF64(double v) {
220baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
221baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addF64(v);
222baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
223baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
22445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI64(Double.doubleToRawLongBits(v));
22545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
22645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
22745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addObj(BaseObj obj) {
228baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
229f30d838bc0cb870fe8d96dcbd313828b3e23d6a0Jason Sams            if (obj != null) {
230f30d838bc0cb870fe8d96dcbd313828b3e23d6a0Jason Sams                mN.addObj(obj.getNObj());
231f30d838bc0cb870fe8d96dcbd313828b3e23d6a0Jason Sams            } else {
232f30d838bc0cb870fe8d96dcbd313828b3e23d6a0Jason Sams                mN.addObj(null);
233f30d838bc0cb870fe8d96dcbd313828b3e23d6a0Jason Sams            }
234baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
235baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
23645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        if (obj != null) {
23745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams            addI32(obj.getID(null));
23845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        } else {
23945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams            addI32(0);
24045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        }
24145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
24245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
24345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addF32(Float2 v) {
244baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
245baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addF32(new android.renderscript.Float2(v.x, v.y));
246baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
247baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
24845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF32(v.x);
24945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF32(v.y);
25045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
25145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addF32(Float3 v) {
252baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
253baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addF32(new android.renderscript.Float3(v.x, v.y, v.z));
254baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
255baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
25645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF32(v.x);
25745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF32(v.y);
25845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF32(v.z);
25945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
26045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addF32(Float4 v) {
261baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
262baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addF32(new android.renderscript.Float4(v.x, v.y, v.z, v.w));
263baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
264baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
26545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF32(v.x);
26645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF32(v.y);
26745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF32(v.z);
26845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF32(v.w);
26945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
27045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
27145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addF64(Double2 v) {
272baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
273baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addF64(new android.renderscript.Double2(v.x, v.y));
274baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
275baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
27645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF64(v.x);
27745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF64(v.y);
27845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
27945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addF64(Double3 v) {
280baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
281baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addF64(new android.renderscript.Double3(v.x, v.y, v.z));
282baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
283baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
28445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF64(v.x);
28545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF64(v.y);
28645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF64(v.z);
28745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
28845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addF64(Double4 v) {
289baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
290baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addF64(new android.renderscript.Double4(v.x, v.y, v.z, v.w));
291baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
292baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
29345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF64(v.x);
29445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF64(v.y);
29545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF64(v.z);
29645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addF64(v.w);
29745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
29845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
29945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addI8(Byte2 v) {
300baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
301baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addI8(new android.renderscript.Byte2(v.x, v.y));
302baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
303baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
30445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI8(v.x);
30545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI8(v.y);
30645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
30745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addI8(Byte3 v) {
308baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
309baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addI8(new android.renderscript.Byte3(v.x, v.y, v.z));
310baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
311baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
31245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI8(v.x);
31345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI8(v.y);
31445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI8(v.z);
31545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
31645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addI8(Byte4 v) {
317baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
318baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addI8(new android.renderscript.Byte4(v.x, v.y, v.z, v.w));
319baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
320baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
32145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI8(v.x);
32245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI8(v.y);
32345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI8(v.z);
32445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI8(v.w);
32545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
32645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
32745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addU8(Short2 v) {
328baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
329baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addU8(new android.renderscript.Short2(v.x, v.y));
330baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
331baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
33245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU8(v.x);
33345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU8(v.y);
33445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
33545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addU8(Short3 v) {
336baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
337baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addU8(new android.renderscript.Short3(v.x, v.y, v.z));
338baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
339baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
34045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU8(v.x);
34145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU8(v.y);
34245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU8(v.z);
34345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
34445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addU8(Short4 v) {
345baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
346baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addU8(new android.renderscript.Short4(v.x, v.y, v.z, v.w));
347baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
348baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
34945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU8(v.x);
35045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU8(v.y);
35145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU8(v.z);
35245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU8(v.w);
35345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
35445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
35545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addI16(Short2 v) {
356baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
357baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addI16(new android.renderscript.Short2(v.x, v.y));
358baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
359baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
36045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI16(v.x);
36145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI16(v.y);
36245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
36345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addI16(Short3 v) {
364baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
365baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addI16(new android.renderscript.Short3(v.x, v.y, v.z));
366baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
367baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
36845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI16(v.x);
36945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI16(v.y);
37045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI16(v.z);
37145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
37245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addI16(Short4 v) {
373baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
374baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addI16(new android.renderscript.Short4(v.x, v.y, v.z, v.w));
375baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
376baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
37745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI16(v.x);
37845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI16(v.y);
37945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI16(v.z);
38045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI16(v.w);
38145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
38245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
38345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addU16(Int2 v) {
384baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
385baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addU16(new android.renderscript.Int2(v.x, v.y));
386baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
387baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
38845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU16(v.x);
38945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU16(v.y);
39045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
39145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addU16(Int3 v) {
392baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
393baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addU16(new android.renderscript.Int3(v.x, v.y, v.z));
394baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
395baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
39645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU16(v.x);
39745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU16(v.y);
39845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU16(v.z);
39945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
40045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addU16(Int4 v) {
401baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
402baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addU16(new android.renderscript.Int4(v.x, v.y, v.z, v.w));
403baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
404baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
40545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU16(v.x);
40645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU16(v.y);
40745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU16(v.z);
40845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU16(v.w);
40945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
41045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
41145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addI32(Int2 v) {
412baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
413baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addI32(new android.renderscript.Int2(v.x, v.y));
414baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
415baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
41645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI32(v.x);
41745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI32(v.y);
41845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
41945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addI32(Int3 v) {
420baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
421baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addI32(new android.renderscript.Int3(v.x, v.y, v.z));
422baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
423baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
42445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI32(v.x);
42545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI32(v.y);
42645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI32(v.z);
42745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
42845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addI32(Int4 v) {
429baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
430baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addI32(new android.renderscript.Int4(v.x, v.y, v.z, v.w));
431baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
432baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
43345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI32(v.x);
43445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI32(v.y);
43545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI32(v.z);
43645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI32(v.w);
43745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
43845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
43945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addU32(Long2 v) {
440baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
441baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addU32(new android.renderscript.Long2(v.x, v.y));
442baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
443baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
44445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU32(v.x);
44545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU32(v.y);
44645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
44745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addU32(Long3 v) {
448baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
449baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addU32(new android.renderscript.Long3(v.x, v.y, v.z));
450baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
451baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
45245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU32(v.x);
45345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU32(v.y);
45445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU32(v.z);
45545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
45645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addU32(Long4 v) {
457baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
458baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addU32(new android.renderscript.Long4(v.x, v.y, v.z, v.w));
459baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
460baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
46145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU32(v.x);
46245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU32(v.y);
46345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU32(v.z);
46445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU32(v.w);
46545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
46645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
46745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addI64(Long2 v) {
468baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
469baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addI64(new android.renderscript.Long2(v.x, v.y));
470baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
471baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
47245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI64(v.x);
47345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI64(v.y);
47445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
47545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addI64(Long3 v) {
476baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
477baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addI64(new android.renderscript.Long3(v.x, v.y, v.z));
478baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
479baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
48045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI64(v.x);
48145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI64(v.y);
48245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI64(v.z);
48345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
48445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addI64(Long4 v) {
485baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
486baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addI64(new android.renderscript.Long4(v.x, v.y, v.z, v.w));
487baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
488baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
48945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI64(v.x);
49045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI64(v.y);
49145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI64(v.z);
49245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI64(v.w);
49345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
49445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
49545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addU64(Long2 v) {
496baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
497baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addU64(new android.renderscript.Long2(v.x, v.y));
498baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
499baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
50045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU64(v.x);
50145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU64(v.y);
50245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
50345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addU64(Long3 v) {
504baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
505baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addU64(new android.renderscript.Long3(v.x, v.y, v.z));
506baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
507baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
50845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU64(v.x);
50945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU64(v.y);
51045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU64(v.z);
51145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
51245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addU64(Long4 v) {
513baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
514baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addU64(new android.renderscript.Long4(v.x, v.y, v.z, v.w));
515baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
516baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
51745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU64(v.x);
51845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU64(v.y);
51945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU64(v.z);
52045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addU64(v.w);
52145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
52245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
52345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addMatrix(Matrix4f v) {
524baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
525baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addMatrix(new android.renderscript.Matrix4f(v.getArray()));
526baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
527baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
52845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        for (int i=0; i < v.mMat.length; i++) {
52945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams            addF32(v.mMat[i]);
53045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        }
53145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
53245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
53345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addMatrix(Matrix3f v) {
534baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
535baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addMatrix(new android.renderscript.Matrix3f(v.getArray()));
536baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
537baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
53845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        for (int i=0; i < v.mMat.length; i++) {
53945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams            addF32(v.mMat[i]);
54045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        }
54145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
54245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
54345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addMatrix(Matrix2f v) {
544baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
545baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addMatrix(new android.renderscript.Matrix2f(v.getArray()));
546baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
547baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
54845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        for (int i=0; i < v.mMat.length; i++) {
54945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams            addF32(v.mMat[i]);
55045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        }
55145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
55245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
55345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public void addBoolean(boolean v) {
554baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
555baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            mN.addBoolean(v);
556baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return;
557baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
55845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        addI8((byte)(v ? 1 : 0));
55945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
56045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
56145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    public final byte[] getData() {
562baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        if (shouldThunk()) {
563baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray            return mN.getData();
564baf4b4a16ff2ab85653438b93db9af03d4375f2dTim Murray        }
56545d443665f5ce7efa934706a89883f0cc87f3513Jason Sams        return mData;
56645d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    }
56745d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
56845d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    private final byte mData[];
56945d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    private int mPos;
57045d443665f5ce7efa934706a89883f0cc87f3513Jason Sams    private int mLen;
57145d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
57245d443665f5ce7efa934706a89883f0cc87f3513Jason Sams}
57345d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
57445d443665f5ce7efa934706a89883f0cc87f3513Jason Sams
575