12ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller/* GENERATED SOURCE. DO NOT MODIFY. */
22ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller/*
32ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller **********************************************************************
42ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Copyright (c) 2002-2014, Google, International Business Machines
52ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Corporation and others.  All Rights Reserved.
62ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller **********************************************************************
72ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller * Author: Mark Davis
82ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller **********************************************************************
92ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller */
102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerpackage android.icu.impl;
112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerimport android.icu.util.Freezable;
132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
151537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller/**
161537b2f39245c07b00aa78c3600f7aebcb172490Neil Fuller * @hide Only a subset of ICU is exposed in Android
17836e6b40a94ec3fb7545a76cb072960442b7eee9Neil Fuller */
182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller@SuppressWarnings({ "unchecked", "rawtypes" })
192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fullerpublic class Row<C0, C1, C2, C3, C4> implements java.lang.Comparable, Cloneable,
202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                                        Freezable<Row<C0, C1, C2, C3, C4>>{
212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    protected Object[] items;
222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    protected volatile boolean frozen;
232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    /**
252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     * Convenience Methods
262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller     */
272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static <C0, C1> R2<C0,C1> of(C0 p0, C1 p1) {
282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return new R2<C0,C1>(p0,p1);
292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static <C0, C1, C2> R3<C0,C1,C2> of(C0 p0, C1 p1, C2 p2) {
312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return new R3<C0,C1,C2>(p0,p1,p2);
322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static <C0, C1, C2, C3> R4<C0,C1,C2,C3> of(C0 p0, C1 p1, C2 p2, C3 p3) {
342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return new R4<C0,C1,C2,C3>(p0,p1,p2,p3);
352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static <C0, C1, C2, C3, C4> R5<C0,C1,C2,C3,C4> of(C0 p0, C1 p1, C2 p2, C3 p3, C4 p4) {
372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return new R5<C0,C1,C2,C3,C4>(p0,p1,p2,p3,p4);
382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static class R2<C0, C1> extends Row<C0, C1, C1, C1, C1> {
412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public R2(C0 a, C1 b)  {
422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            items = new Object[] {a, b};
432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static class R3<C0, C1, C2> extends Row<C0, C1, C2, C2, C2> {
462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public R3(C0 a, C1 b, C2 c)  {
472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            items = new Object[] {a, b, c};
482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static class R4<C0, C1, C2, C3> extends Row<C0, C1, C2, C3, C3> {
512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public R4(C0 a, C1 b, C2 c, C3 d)  {
522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            items = new Object[] {a, b, c, d};
532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public static class R5<C0, C1, C2, C3, C4> extends Row<C0, C1, C2, C3, C4> {
562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        public R5(C0 a, C1 b, C2 c, C3 d, C4 e)  {
572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            items = new Object[] {a, b, c, d, e};
582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public Row<C0, C1, C2, C3, C4> set0(C0 item) {
622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return set(0, item);
632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public C0 get0() {
652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return (C0) items[0];
662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public Row<C0, C1, C2, C3, C4> set1(C1 item) {
682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return set(1, item);
692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public C1 get1() {
712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return (C1) items[1];
722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public Row<C0, C1, C2, C3, C4> set2(C2 item) {
742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return set(2, item);
752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public C2 get2() {
772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return (C2) items[2];
782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public Row<C0, C1, C2, C3, C4> set3(C3 item) {
802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return set(3, item);
812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public C3 get3() {
832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return (C3) items[3];
842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public Row<C0, C1, C2, C3, C4> set4(C4 item) {
862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return set(4, item);
872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public C4 get4() {
892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return (C4) items[4];
902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    protected Row<C0, C1, C2, C3, C4> set(int i, Object item) {
932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (frozen) {
942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            throw new UnsupportedOperationException("Attempt to modify frozen object");
952ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
962ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        items[i] = item;
972ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return this;
982ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
992ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
1002ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public int hashCode() {
1012ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        int sum = items.length;
1022ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        for (Object item : items) {
1032ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            sum = sum*37 + Utility.checkHash(item);
1042ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
1052ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return sum;
1062ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
1072ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
1082ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public boolean equals(Object other) {
1092ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (other == null) {
1102ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return false;
1112ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
1122ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (this == other) {
1132ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return true;
1142ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
1152ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        try {
1162ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            Row<C0, C1, C2, C3, C4> that = (Row<C0, C1, C2, C3, C4>)other;
1172ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (items.length != that.items.length) {
1182ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                return false;
1192ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
1202ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            int i = 0;
1212ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            for (Object item : items) {
1222ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                if (!Utility.objectEquals(item, that.items[i++])) {
1232ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                    return false;
1242ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                }
1252ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
1262ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return true;
1272ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        } catch (Exception e) {
1282ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return false;
1292ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
1302ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
1312ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
1322ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public int compareTo(Object other) {
1332ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        int result;
1342ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        Row<C0, C1, C2, C3, C4> that = (Row<C0, C1, C2, C3, C4>)other;
1352ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        result = items.length - that.items.length;
1362ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (result != 0) {
1372ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return result;
1382ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
1392ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        int i = 0;
1402ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        for (Object item : items) {
1412ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            result = Utility.checkCompare(((Comparable)item), ((Comparable)that.items[i++]));
1422ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (result != 0) {
1432ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                return result;
1442ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
1452ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
1462ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return 0;
1472ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
1482ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
1492ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public String toString() {
1502ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        StringBuilder result = new StringBuilder("[");
1512ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        boolean first = true;
1522ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        for (Object item : items) {
1532ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            if (first) {
1542ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                first = false;
1552ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            } else {
1562ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller                result.append(", ");
1572ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            }
1582ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            result.append(item);
1592ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
1602ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return result.append("]").toString();
1612ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
1622ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
1632ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public boolean isFrozen() {
1642ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return frozen;
1652ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
1662ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
1672ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public Row<C0, C1, C2, C3, C4> freeze() {
1682ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        frozen = true;
1692ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        return this;
1702ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
1712ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
1722ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public Object clone() {
1732ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        if (frozen) return this;
1742ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        try {
1752ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            Row<C0, C1, C2, C3, C4> result = (Row<C0, C1, C2, C3, C4>) super.clone();
1762ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            items = items.clone();
1772ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return result;
1782ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        } catch (CloneNotSupportedException e) {
1792ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return null;
1802ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
1812ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
1822ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
1832ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    public Row<C0, C1, C2, C3, C4> cloneAsThawed() {
1842ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        try {
1852ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            Row<C0, C1, C2, C3, C4> result = (Row<C0, C1, C2, C3, C4>) super.clone();
1862ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            items = items.clone();
1872ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            result.frozen = false;
1882ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return result;
1892ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        } catch (CloneNotSupportedException e) {
1902ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller            return null;
1912ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller        }
1922ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller    }
1932ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller}
1942ae130017183d2f66d55bf0ca51f8da3294644fdNeil Fuller
195