125430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams/* 225430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams * Copyright (C) 2008 The Android Open Source Project 325430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams * 425430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 525430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams * you may not use this file except in compliance with the License. 625430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams * You may obtain a copy of the License at 725430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams * 825430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams * http://www.apache.org/licenses/LICENSE-2.0 925430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams * 1025430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams * Unless required by applicable law or agreed to in writing, software 1125430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams * distributed under the License is distributed on an "AS IS" BASIS, 1225430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1325430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams * See the License for the specific language governing permissions and 1425430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams * limitations under the License. 1525430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams */ 1625430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams 1725430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Samspackage android.renderscript; 1825430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams 1925430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams 209c9ad3f8c218954e46aab81f9af7834cea5675caStephen Hines/** 2111518acc8c416023d8c2192b441a1767205676d9Robert Ly * Utility class for packing arguments and structures from Android system objects to 2211518acc8c416023d8c2192b441a1767205676d9Robert Ly * Renderscript objects. 2342d6c9e1e794713022d1370ba844ce05c7b2793fJason Sams * 2442d6c9e1e794713022d1370ba844ce05c7b2793fJason Sams **/ 2525430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Samspublic class FieldPacker { 2625430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams public FieldPacker(int len) { 2725430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams mPos = 0; 28e27832acc083fa889e86b4c629b6aedd8855cecaStephen Hines mLen = len; 2925430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams mData = new byte[len]; 3025430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams } 3125430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams 3225430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams public void align(int v) { 33e27832acc083fa889e86b4c629b6aedd8855cecaStephen Hines if ((v <= 0) || ((v & (v - 1)) != 0)) { 34e27832acc083fa889e86b4c629b6aedd8855cecaStephen Hines throw new RSIllegalArgumentException("argument must be a non-negative non-zero power of 2: " + v); 35e27832acc083fa889e86b4c629b6aedd8855cecaStephen Hines } 36e27832acc083fa889e86b4c629b6aedd8855cecaStephen Hines 3725430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams while ((mPos & (v - 1)) != 0) { 3825430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams mData[mPos++] = 0; 3925430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams } 4025430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams } 4125430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams 42a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams public void reset() { 4325430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams mPos = 0; 4425430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams } 45a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams public void reset(int i) { 46e27832acc083fa889e86b4c629b6aedd8855cecaStephen Hines if ((i < 0) || (i >= mLen)) { 47e27832acc083fa889e86b4c629b6aedd8855cecaStephen Hines throw new RSIllegalArgumentException("out of range argument: " + i); 48e27832acc083fa889e86b4c629b6aedd8855cecaStephen Hines } 49a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams mPos = i; 50a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams } 5125430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams 52020bb7b5ac26a6e2d2f6852952a84bb246445fcfJason Sams public void skip(int i) { 53e27832acc083fa889e86b4c629b6aedd8855cecaStephen Hines int res = mPos + i; 546e66725e1cd631007c226e9ea7b99211bd1276e5Shih-wei Liao if ((res < 0) || (res > mLen)) { 55e27832acc083fa889e86b4c629b6aedd8855cecaStephen Hines throw new RSIllegalArgumentException("out of range argument: " + i); 56e27832acc083fa889e86b4c629b6aedd8855cecaStephen Hines } 57e27832acc083fa889e86b4c629b6aedd8855cecaStephen Hines mPos = res; 58020bb7b5ac26a6e2d2f6852952a84bb246445fcfJason Sams } 59020bb7b5ac26a6e2d2f6852952a84bb246445fcfJason Sams 60a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams public void addI8(byte v) { 6125430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams mData[mPos++] = v; 6225430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams } 6325430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams 64a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams public void addI16(short v) { 6525430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams align(2); 6625430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams mData[mPos++] = (byte)(v & 0xff); 6725430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams mData[mPos++] = (byte)(v >> 8); 6825430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams } 6925430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams 70a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams public void addI32(int v) { 7125430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams align(4); 7225430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams mData[mPos++] = (byte)(v & 0xff); 7325430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams mData[mPos++] = (byte)((v >> 8) & 0xff); 7425430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams mData[mPos++] = (byte)((v >> 16) & 0xff); 7525430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams mData[mPos++] = (byte)((v >> 24) & 0xff); 7625430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams } 7725430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams 78a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams public void addI64(long v) { 7925430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams align(8); 8025430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams mData[mPos++] = (byte)(v & 0xff); 8125430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams mData[mPos++] = (byte)((v >> 8) & 0xff); 8225430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams mData[mPos++] = (byte)((v >> 16) & 0xff); 8325430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams mData[mPos++] = (byte)((v >> 24) & 0xff); 8425430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams mData[mPos++] = (byte)((v >> 32) & 0xff); 8525430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams mData[mPos++] = (byte)((v >> 40) & 0xff); 8625430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams mData[mPos++] = (byte)((v >> 48) & 0xff); 8725430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams mData[mPos++] = (byte)((v >> 56) & 0xff); 8825430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams } 8925430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams 90a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams public void addU8(short v) { 9125430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams if ((v < 0) || (v > 0xff)) { 92ee73498ddf896f6ed003e9ce1fab87aefda90173Jason Sams android.util.Log.e("rs", "FieldPacker.addU8( " + v + " )"); 9325430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams throw new IllegalArgumentException("Saving value out of range for type"); 9425430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams } 9525430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams mData[mPos++] = (byte)v; 9625430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams } 9725430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams 98a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams public void addU16(int v) { 9925430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams if ((v < 0) || (v > 0xffff)) { 100ee73498ddf896f6ed003e9ce1fab87aefda90173Jason Sams android.util.Log.e("rs", "FieldPacker.addU16( " + v + " )"); 10125430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams throw new IllegalArgumentException("Saving value out of range for type"); 10225430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams } 10325430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams align(2); 10425430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams mData[mPos++] = (byte)(v & 0xff); 10525430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams mData[mPos++] = (byte)(v >> 8); 10625430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams } 10725430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams 108a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams public void addU32(long v) { 109ee73498ddf896f6ed003e9ce1fab87aefda90173Jason Sams if ((v < 0) || (v > 0xffffffffL)) { 110ee73498ddf896f6ed003e9ce1fab87aefda90173Jason Sams android.util.Log.e("rs", "FieldPacker.addU32( " + v + " )"); 11125430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams throw new IllegalArgumentException("Saving value out of range for type"); 11225430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams } 11325430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams align(4); 11425430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams mData[mPos++] = (byte)(v & 0xff); 11525430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams mData[mPos++] = (byte)((v >> 8) & 0xff); 11625430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams mData[mPos++] = (byte)((v >> 16) & 0xff); 11725430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams mData[mPos++] = (byte)((v >> 24) & 0xff); 11825430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams } 11925430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams 120a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams public void addU64(long v) { 12125430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams if (v < 0) { 122ee73498ddf896f6ed003e9ce1fab87aefda90173Jason Sams android.util.Log.e("rs", "FieldPacker.addU64( " + v + " )"); 12325430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams throw new IllegalArgumentException("Saving value out of range for type"); 12425430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams } 12525430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams align(8); 12625430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams mData[mPos++] = (byte)(v & 0xff); 12725430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams mData[mPos++] = (byte)((v >> 8) & 0xff); 12825430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams mData[mPos++] = (byte)((v >> 16) & 0xff); 12925430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams mData[mPos++] = (byte)((v >> 24) & 0xff); 13025430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams mData[mPos++] = (byte)((v >> 32) & 0xff); 13125430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams mData[mPos++] = (byte)((v >> 40) & 0xff); 13225430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams mData[mPos++] = (byte)((v >> 48) & 0xff); 13325430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams mData[mPos++] = (byte)((v >> 56) & 0xff); 13425430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams } 13525430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams 136a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams public void addF32(float v) { 13725430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams addI32(Float.floatToRawIntBits(v)); 13825430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams } 13925430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams 14002f41705199336f808ece50d81585450e7f8f61fStephen Hines public void addF64(double v) { 14125430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams addI64(Double.doubleToRawLongBits(v)); 14225430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams } 14325430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams 144a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams public void addObj(BaseObj obj) { 145a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams if (obj != null) { 146e07694b24f7d12d72b084b6651356681ebd0efd6Jason Sams addI32(obj.getID(null)); 147a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams } else { 148a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addI32(0); 149a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams } 150a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams } 151a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams 152a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams public void addF32(Float2 v) { 153a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addF32(v.x); 154a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addF32(v.y); 155a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams } 156a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams public void addF32(Float3 v) { 157a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addF32(v.x); 158a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addF32(v.y); 159a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addF32(v.z); 160a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams } 161a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams public void addF32(Float4 v) { 162a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addF32(v.x); 163a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addF32(v.y); 164a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addF32(v.z); 165a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addF32(v.w); 166a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams } 167a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams 16879ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines public void addF64(Double2 v) { 16979ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines addF64(v.x); 17079ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines addF64(v.y); 17179ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines } 17279ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines public void addF64(Double3 v) { 17379ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines addF64(v.x); 17479ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines addF64(v.y); 17579ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines addF64(v.z); 17679ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines } 17779ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines public void addF64(Double4 v) { 17879ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines addF64(v.x); 17979ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines addF64(v.y); 18079ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines addF64(v.z); 18179ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines addF64(v.w); 18279ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines } 18379ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines 184a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams public void addI8(Byte2 v) { 185a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addI8(v.x); 186a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addI8(v.y); 187a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams } 188a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams public void addI8(Byte3 v) { 189a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addI8(v.x); 190a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addI8(v.y); 191a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addI8(v.z); 192a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams } 193a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams public void addI8(Byte4 v) { 194a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addI8(v.x); 195a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addI8(v.y); 196a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addI8(v.z); 197a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addI8(v.w); 198a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams } 199a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams 200a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams public void addU8(Short2 v) { 201a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addU8(v.x); 202a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addU8(v.y); 203a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams } 204a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams public void addU8(Short3 v) { 205a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addU8(v.x); 206a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addU8(v.y); 207a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addU8(v.z); 208a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams } 209a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams public void addU8(Short4 v) { 210a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addU8(v.x); 211a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addU8(v.y); 212a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addU8(v.z); 213a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addU8(v.w); 214a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams } 215a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams 216a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams public void addI16(Short2 v) { 217a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addI16(v.x); 218a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addI16(v.y); 219a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams } 220a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams public void addI16(Short3 v) { 221a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addI16(v.x); 222a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addI16(v.y); 223a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addI16(v.z); 224a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams } 225a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams public void addI16(Short4 v) { 226a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addI16(v.x); 227a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addI16(v.y); 228a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addI16(v.z); 229a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addI16(v.w); 230a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams } 231a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams 232a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams public void addU16(Int2 v) { 233a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addU16(v.x); 234a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addU16(v.y); 235a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams } 236a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams public void addU16(Int3 v) { 237a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addU16(v.x); 238a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addU16(v.y); 239a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addU16(v.z); 240a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams } 241a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams public void addU16(Int4 v) { 242a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addU16(v.x); 243a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addU16(v.y); 244a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addU16(v.z); 245a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addU16(v.w); 246a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams } 247a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams 248a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams public void addI32(Int2 v) { 249a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addI32(v.x); 250a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addI32(v.y); 251a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams } 252a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams public void addI32(Int3 v) { 253a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addI32(v.x); 254a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addI32(v.y); 255a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addI32(v.z); 256a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams } 257a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams public void addI32(Int4 v) { 258a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addI32(v.x); 259a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addI32(v.y); 260a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addI32(v.z); 261a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addI32(v.w); 262a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams } 263a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams 264e9f5c1894bb3fd0d86b769329037790a474f14c1Stephen Hines public void addU32(Long2 v) { 265a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addU32(v.x); 266a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addU32(v.y); 267a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams } 268e9f5c1894bb3fd0d86b769329037790a474f14c1Stephen Hines public void addU32(Long3 v) { 269a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addU32(v.x); 270a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addU32(v.y); 271a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addU32(v.z); 272a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams } 273e9f5c1894bb3fd0d86b769329037790a474f14c1Stephen Hines public void addU32(Long4 v) { 274a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addU32(v.x); 275a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addU32(v.y); 276a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addU32(v.z); 277a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams addU32(v.w); 278a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams } 279a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams 28079ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines public void addI64(Long2 v) { 28179ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines addI64(v.x); 28279ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines addI64(v.y); 28379ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines } 28479ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines public void addI64(Long3 v) { 28579ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines addI64(v.x); 28679ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines addI64(v.y); 28779ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines addI64(v.z); 28879ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines } 28979ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines public void addI64(Long4 v) { 29079ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines addI64(v.x); 29179ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines addI64(v.y); 29279ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines addI64(v.z); 29379ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines addI64(v.w); 29479ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines } 29579ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines 29679ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines public void addU64(Long2 v) { 29779ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines addU64(v.x); 29879ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines addU64(v.y); 29979ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines } 30079ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines public void addU64(Long3 v) { 30179ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines addU64(v.x); 30279ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines addU64(v.y); 30379ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines addU64(v.z); 30479ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines } 30579ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines public void addU64(Long4 v) { 30679ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines addU64(v.x); 30779ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines addU64(v.y); 30879ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines addU64(v.z); 30979ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines addU64(v.w); 31079ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines } 31179ad3f25bc224a86487aa6cf7b2c7ffe617ee77dStephen Hines 312e27cdeeecba5b445e307d653d9cb7da007adfac3Alex Sakhartchouk public void addMatrix(Matrix4f v) { 313e27cdeeecba5b445e307d653d9cb7da007adfac3Alex Sakhartchouk for (int i=0; i < v.mMat.length; i++) { 314e27cdeeecba5b445e307d653d9cb7da007adfac3Alex Sakhartchouk addF32(v.mMat[i]); 315e27cdeeecba5b445e307d653d9cb7da007adfac3Alex Sakhartchouk } 316e27cdeeecba5b445e307d653d9cb7da007adfac3Alex Sakhartchouk } 317e27cdeeecba5b445e307d653d9cb7da007adfac3Alex Sakhartchouk 318e27cdeeecba5b445e307d653d9cb7da007adfac3Alex Sakhartchouk public void addMatrix(Matrix3f v) { 319e27cdeeecba5b445e307d653d9cb7da007adfac3Alex Sakhartchouk for (int i=0; i < v.mMat.length; i++) { 320e27cdeeecba5b445e307d653d9cb7da007adfac3Alex Sakhartchouk addF32(v.mMat[i]); 321e27cdeeecba5b445e307d653d9cb7da007adfac3Alex Sakhartchouk } 322e27cdeeecba5b445e307d653d9cb7da007adfac3Alex Sakhartchouk } 323e27cdeeecba5b445e307d653d9cb7da007adfac3Alex Sakhartchouk 324e27cdeeecba5b445e307d653d9cb7da007adfac3Alex Sakhartchouk public void addMatrix(Matrix2f v) { 325e27cdeeecba5b445e307d653d9cb7da007adfac3Alex Sakhartchouk for (int i=0; i < v.mMat.length; i++) { 326e27cdeeecba5b445e307d653d9cb7da007adfac3Alex Sakhartchouk addF32(v.mMat[i]); 327e27cdeeecba5b445e307d653d9cb7da007adfac3Alex Sakhartchouk } 328e27cdeeecba5b445e307d653d9cb7da007adfac3Alex Sakhartchouk } 329e27cdeeecba5b445e307d653d9cb7da007adfac3Alex Sakhartchouk 330fae3f6b4153ff39c4f9e00dcf635b413d0ae4e85Jason Sams public void addBoolean(boolean v) { 3319e2b0c505af55a56171db0d025368e7ea6c15458Jason Sams addI8((byte)(v ? 1 : 0)); 332f110d4b787b91dabe968a812e76e5c1f8d953487Jason Sams } 333f110d4b787b91dabe968a812e76e5c1f8d953487Jason Sams 334a70f416c9cf2fc6cc5e132c1d656ce07441d6b82Jason Sams public final byte[] getData() { 33525430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams return mData; 33625430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams } 33725430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams 33825430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams private final byte mData[]; 33925430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams private int mPos; 340e27832acc083fa889e86b4c629b6aedd8855cecaStephen Hines private int mLen; 34125430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams 34225430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams} 34325430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams 34425430d0734d12d12ca2d2d7a9d18c0cf3c5bdc4eJason Sams 345