16d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton/* 26d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * Copyright (C) 2018 The Android Open Source Project 36d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * 46d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * Licensed under the Apache License, Version 2.0 (the "License"); 56d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * you may not use this file except in compliance with the License. 66d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * You may obtain a copy of the License at 76d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * 86d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * http://www.apache.org/licenses/LICENSE-2.0 96d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * 106d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * Unless required by applicable law or agreed to in writing, software 116d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * distributed under the License is distributed on an "AS IS" BASIS, 126d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * See the License for the specific language governing permissions and 146d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * limitations under the License. 156d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton */ 166d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton 179c80550cbbe357a89e2abeeb9c7769fcaefc3a65Jake Whartonpackage androidx.core.content.res 186d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton 196d6a6a2697de3987e851b268f03a6554c14b59f7Jake Whartonimport android.content.res.ColorStateList 206d6a6a2697de3987e851b268f03a6554c14b59f7Jake Whartonimport android.content.res.TypedArray 216d6a6a2697de3987e851b268f03a6554c14b59f7Jake Whartonimport android.graphics.Typeface 226d6a6a2697de3987e851b268f03a6554c14b59f7Jake Whartonimport android.graphics.drawable.Drawable 236889aa5fa8875d1a2842df11e24a5fbb2fd76a67Jake Whartonimport androidx.annotation.AnyRes 246889aa5fa8875d1a2842df11e24a5fbb2fd76a67Jake Whartonimport androidx.annotation.ColorInt 256889aa5fa8875d1a2842df11e24a5fbb2fd76a67Jake Whartonimport androidx.annotation.Dimension 266889aa5fa8875d1a2842df11e24a5fbb2fd76a67Jake Whartonimport androidx.annotation.RequiresApi 276889aa5fa8875d1a2842df11e24a5fbb2fd76a67Jake Whartonimport androidx.annotation.StyleableRes 286d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton 296d6a6a2697de3987e851b268f03a6554c14b59f7Jake Whartonprivate fun TypedArray.checkAttribute(@StyleableRes index: Int) { 306d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton if (!hasValue(index)) { 316d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton throw IllegalArgumentException("Attribute not defined in set.") 326d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton } 336d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton} 346d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton 356d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton/** 366d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * Retrieve the boolean value for the attribute at [index] or throws [IllegalArgumentException] 376d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * if not defined. 386d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * 396d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * @see TypedArray.hasValue 406d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * @see TypedArray.getBoolean 416d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton */ 426d6a6a2697de3987e851b268f03a6554c14b59f7Jake Whartonfun TypedArray.getBooleanOrThrow(@StyleableRes index: Int): Boolean { 436d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton checkAttribute(index) 446d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton return getBoolean(index, false) 456d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton} 466d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton 476d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton/** 486d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * Retrieve the color value for the attribute at [index] or throws [IllegalArgumentException] 496d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * if not defined. 506d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * 516d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * @see TypedArray.hasValue 526d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * @see TypedArray.getColor 536d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton */ 546d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton@ColorInt 556d6a6a2697de3987e851b268f03a6554c14b59f7Jake Whartonfun TypedArray.getColorOrThrow(@StyleableRes index: Int): Int { 566d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton checkAttribute(index) 576d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton return getColor(index, 0) 586d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton} 596d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton 606d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton/** 616d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * Retrieve the color state list value for the attribute at [index] or throws 626d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * [IllegalArgumentException] if not defined. 636d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * 646d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * @see TypedArray.hasValue 656d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * @see TypedArray.getColorStateList 666d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton */ 676d6a6a2697de3987e851b268f03a6554c14b59f7Jake Whartonfun TypedArray.getColorStateListOrThrow(@StyleableRes index: Int): ColorStateList { 686d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton checkAttribute(index) 696d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton return checkNotNull(getColorStateList(index)) { 706d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton "Attribute value was not a color or color state list." 716d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton } 726d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton} 736d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton 746d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton/** 756d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * Retrieve the dimension value for the attribute at [index] or throws [IllegalArgumentException] 766d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * if not defined. 776d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * 786d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * @see TypedArray.hasValue 796d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * @see TypedArray.getDimension 806d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton */ 816d6a6a2697de3987e851b268f03a6554c14b59f7Jake Whartonfun TypedArray.getDimensionOrThrow(@StyleableRes index: Int): Float { 826d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton checkAttribute(index) 836d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton return getDimension(index, 0f) 846d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton} 856d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton 866d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton/** 876d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * Retrieve the dimension pixel offset value for the attribute at [index] or throws 886d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * [IllegalArgumentException] if not defined. 896d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * 906d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * @see TypedArray.hasValue 916d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * @see TypedArray.getDimensionPixelOffset 926d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton */ 936d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton@Dimension 946d6a6a2697de3987e851b268f03a6554c14b59f7Jake Whartonfun TypedArray.getDimensionPixelOffsetOrThrow(@StyleableRes index: Int): Int { 956d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton checkAttribute(index) 966d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton return getDimensionPixelOffset(index, 0) 976d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton} 986d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton 996d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton/** 1006d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * Retrieve the dimension pixel size value for the attribute at [index] or throws 1016d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * [IllegalArgumentException] if not defined. 1026d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * 1036d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * @see TypedArray.hasValue 1046d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * @see TypedArray.getDimensionPixelSize 1056d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton */ 1066d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton@Dimension 1076d6a6a2697de3987e851b268f03a6554c14b59f7Jake Whartonfun TypedArray.getDimensionPixelSizeOrThrow(@StyleableRes index: Int): Int { 1086d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton checkAttribute(index) 1096d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton return getDimensionPixelSize(index, 0) 1106d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton} 1116d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton 1126d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton/** 1136d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * Retrieve the drawable value for the attribute at [index] or throws [IllegalArgumentException] 1146d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * if not defined. 1156d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * 1166d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * @see TypedArray.hasValue 1176d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * @see TypedArray.getDrawable 1186d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton */ 1196d6a6a2697de3987e851b268f03a6554c14b59f7Jake Whartonfun TypedArray.getDrawableOrThrow(@StyleableRes index: Int): Drawable { 1206d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton checkAttribute(index) 1216d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton return getDrawable(index) 1226d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton} 1236d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton 1246d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton/** 1256d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * Retrieve the float value for the attribute at [index] or throws [IllegalArgumentException] 1266d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * if not defined. 1276d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * 1286d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * @see TypedArray.hasValue 1296d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * @see TypedArray.getFloat 1306d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton */ 1316d6a6a2697de3987e851b268f03a6554c14b59f7Jake Whartonfun TypedArray.getFloatOrThrow(@StyleableRes index: Int): Float { 1326d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton checkAttribute(index) 1336d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton return getFloat(index, 0f) 1346d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton} 1356d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton 1366d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton/** 1376d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * Retrieve the font value for the attribute at [index] or throws [IllegalArgumentException] 1386d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * if not defined. 1396d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * 1406d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * @see TypedArray.hasValue 1416d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * @see TypedArray.getFont 1426d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton */ 1436d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton@RequiresApi(26) 1446d6a6a2697de3987e851b268f03a6554c14b59f7Jake Whartonfun TypedArray.getFontOrThrow(@StyleableRes index: Int): Typeface { 1456d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton checkAttribute(index) 1466d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton return getFont(index) 1476d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton} 1486d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton 1496d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton/** 1506d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * Retrieve the integer value for the attribute at [index] or throws [IllegalArgumentException] 1516d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * if not defined. 1526d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * 1536d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * @see TypedArray.hasValue 1546d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * @see TypedArray.getInt 1556d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton */ 1566d6a6a2697de3987e851b268f03a6554c14b59f7Jake Whartonfun TypedArray.getIntOrThrow(@StyleableRes index: Int): Int { 1576d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton checkAttribute(index) 1586d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton return getInt(index, 0) 1596d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton} 1606d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton 1616d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton/** 1626d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * Retrieve the integer value for the attribute at [index] or throws [IllegalArgumentException] 1636d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * if not defined. 1646d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * 1656d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * @see TypedArray.hasValue 1666d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * @see TypedArray.getInteger 1676d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton */ 1686d6a6a2697de3987e851b268f03a6554c14b59f7Jake Whartonfun TypedArray.getIntegerOrThrow(@StyleableRes index: Int): Int { 1696d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton checkAttribute(index) 1706d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton return getInteger(index, 0) 1716d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton} 1726d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton 1736d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton/** 1742efd5d752e04a4b900d733d6df974d397923a2ddMatt Precious * Retrieves the resource identifier for the attribute at [index] or throws 1752efd5d752e04a4b900d733d6df974d397923a2ddMatt Precious * [IllegalArgumentException] if not defined. 1762efd5d752e04a4b900d733d6df974d397923a2ddMatt Precious * 1772efd5d752e04a4b900d733d6df974d397923a2ddMatt Precious * @see TypedArray.hasValue 1782efd5d752e04a4b900d733d6df974d397923a2ddMatt Precious * @see TypedArray.getResourceId 1792efd5d752e04a4b900d733d6df974d397923a2ddMatt Precious */ 1802efd5d752e04a4b900d733d6df974d397923a2ddMatt Precious@AnyRes 1812efd5d752e04a4b900d733d6df974d397923a2ddMatt Preciousfun TypedArray.getResourceIdOrThrow(@StyleableRes index: Int): Int { 1822efd5d752e04a4b900d733d6df974d397923a2ddMatt Precious checkAttribute(index) 1832efd5d752e04a4b900d733d6df974d397923a2ddMatt Precious return getResourceId(index, 0) 1842efd5d752e04a4b900d733d6df974d397923a2ddMatt Precious} 1852efd5d752e04a4b900d733d6df974d397923a2ddMatt Precious 1862efd5d752e04a4b900d733d6df974d397923a2ddMatt Precious/** 1876d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * Retrieve the string value for the attribute at [index] or throws [IllegalArgumentException] 1886d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * if not defined. 1896d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * 1906d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * @see TypedArray.hasValue 1916d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * @see TypedArray.getString 1926d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton */ 1936d6a6a2697de3987e851b268f03a6554c14b59f7Jake Whartonfun TypedArray.getStringOrThrow(@StyleableRes index: Int): String { 1946d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton checkAttribute(index) 1956d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton return checkNotNull(getString(index)) { 1966d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton "Attribute value could not be coerced to String." 1976d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton } 1986d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton} 1996d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton 2006d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton/** 2016d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * Retrieve the text value for the attribute at [index] or throws [IllegalArgumentException] 2026d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * if not defined. 2036d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * 2046d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * @see TypedArray.hasValue 2056d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * @see TypedArray.getText 2066d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton */ 2076d6a6a2697de3987e851b268f03a6554c14b59f7Jake Whartonfun TypedArray.getTextOrThrow(@StyleableRes index: Int): CharSequence { 2086d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton checkAttribute(index) 2096d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton return checkNotNull(getText(index)) { 2106d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton "Attribute value could not be coerced to CharSequence." 2116d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton } 2126d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton} 2136d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton 2146d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton/** 2156d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * Retrieve the text array value for the attribute at [index] or throws 2166d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * [IllegalArgumentException] if not defined. 2176d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * 2186d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * @see TypedArray.hasValue 2196d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton * @see TypedArray.getTextArray 2206d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton */ 2216d6a6a2697de3987e851b268f03a6554c14b59f7Jake Whartonfun TypedArray.getTextArrayOrThrow(@StyleableRes index: Int): Array<CharSequence> { 2226d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton checkAttribute(index) 2236d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton return getTextArray(index) 2246d6a6a2697de3987e851b268f03a6554c14b59f7Jake Wharton} 22542dd0f9b222d39029f748d8972dbc70d601ad572Steven Schoen 22642dd0f9b222d39029f748d8972dbc70d601ad572Steven Schoen/** 22742dd0f9b222d39029f748d8972dbc70d601ad572Steven Schoen * Executes the given [block] function on this TypedArray and then recycles it. 22842dd0f9b222d39029f748d8972dbc70d601ad572Steven Schoen * 22942dd0f9b222d39029f748d8972dbc70d601ad572Steven Schoen * @see kotlin.io.use 23042dd0f9b222d39029f748d8972dbc70d601ad572Steven Schoen */ 23142dd0f9b222d39029f748d8972dbc70d601ad572Steven Schoeninline fun <R> TypedArray.use(block: (TypedArray) -> R): R { 23242dd0f9b222d39029f748d8972dbc70d601ad572Steven Schoen return block(this).also { 23342dd0f9b222d39029f748d8972dbc70d601ad572Steven Schoen recycle() 23442dd0f9b222d39029f748d8972dbc70d601ad572Steven Schoen } 23542dd0f9b222d39029f748d8972dbc70d601ad572Steven Schoen} 236