jtulach@165: /** jtulach@165: * Back 2 Browser Bytecode Translator jtulach@165: * Copyright (C) 2012 Jaroslav Tulach jtulach@165: * jtulach@165: * This program is free software: you can redistribute it and/or modify jtulach@165: * it under the terms of the GNU General Public License as published by jtulach@165: * the Free Software Foundation, version 2 of the License. jtulach@165: * jtulach@165: * This program is distributed in the hope that it will be useful, jtulach@165: * but WITHOUT ANY WARRANTY; without even the implied warranty of jtulach@165: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the jtulach@165: * GNU General Public License for more details. jtulach@165: * jtulach@165: * You should have received a copy of the GNU General Public License jtulach@165: * along with this program. Look for COPYING file in the top folder. jtulach@165: * If not, see http://opensource.org/licenses/GPL-2.0. jtulach@162: */ jtulach@162: package org.apidesign.vm4brwsr; jtulach@162: jtulach@162: /** jtulach@162: * jtulach@162: * @author Jaroslav Tulach jtulach@162: */ jtulach@162: class StringArray { jtulach@162: private String[] arr; jtulach@162: jtulach@162: public StringArray() { jtulach@162: } jtulach@162: jtulach@162: private StringArray(String[] arr) { jtulach@162: this.arr = arr; jtulach@162: } jtulach@162: jtulach@162: public void add(String s) { jtulach@162: if (arr == null) { jtulach@162: arr = new String[1]; jtulach@162: } else { jtulach@162: String[] tmp = new String[arr.length + 1]; jtulach@162: for (int i = 0; i < arr.length; i++) { jtulach@162: tmp[i] = arr[i]; jtulach@162: } jtulach@162: arr = tmp; jtulach@162: } jtulach@162: arr[arr.length - 1] = s; jtulach@162: } jaroslav@874: jaroslav@874: StringArray addAndNew(String... values) { jaroslav@874: int j; jaroslav@874: String[] tmp; jaroslav@874: if (arr == null) { jaroslav@874: tmp = new String[values.length]; jaroslav@874: j = 0; jaroslav@874: } else { jaroslav@874: tmp = new String[arr.length + values.length]; jaroslav@874: for (int i = 0; i < arr.length; i++) { jaroslav@874: tmp[i] = arr[i]; jaroslav@874: } jaroslav@874: j = arr.length; jaroslav@874: } jaroslav@874: for (int i = 0; i < values.length;) { jaroslav@874: tmp[j++] = values[i++]; jaroslav@874: } jaroslav@874: return new StringArray(tmp); jaroslav@874: } jtulach@162: jtulach@162: public String[] toArray() { jtulach@162: return arr == null ? new String[0] : arr; jtulach@162: } jtulach@162: jaroslav@272: static StringArray asList(String... names) { jtulach@162: return new StringArray(names); jtulach@162: } jtulach@162: jtulach@162: void reverse() { jtulach@162: for (int i = 0, j = arr.length; i < j; i++) { jtulach@162: String s = arr[i]; jtulach@162: arr[i] = arr[--j]; jtulach@162: arr[j] = s; jtulach@162: } jtulach@162: } jtulach@162: jtulach@162: boolean contains(String n) { jtulach@162: if (arr == null) { jtulach@162: return false; jtulach@162: } jtulach@162: for (int i = 0; i < arr.length; i++) { jtulach@162: if (n.equals(arr[i])) { jtulach@162: return true; jtulach@162: } jtulach@162: } jtulach@162: return false; jtulach@162: } jtulach@162: jtulach@162: void delete(int indx) { Martin@243: if (arr == null || indx < 0 || indx >= arr.length) { jtulach@162: return; jtulach@162: } jtulach@162: String[] tmp = new String[arr.length - 1]; jtulach@162: for (int i = 0, j = 0; i < arr.length; i++) { Martin@243: if (i != indx) { Martin@243: tmp[j++] = arr[i]; jtulach@162: } jtulach@162: } Martin@243: arr = tmp; jtulach@162: } jaroslav@1587: void remove(String item) { jaroslav@1587: int f = indexOf(item); jaroslav@1587: if (f != -1) { jaroslav@1587: delete(f); jaroslav@1587: } jaroslav@1587: } jtulach@162: jtulach@162: int indexOf(String ic) { jaroslav@1457: if (arr != null) for (int i = 0; i < arr.length; i++) { jtulach@162: if (ic.equals(arr[i])) { jtulach@162: return i; jtulach@162: } jtulach@162: } jtulach@162: return -1; jtulach@162: } jaroslav@1455: jaroslav@1466: String getAndClear(int count, boolean clear) { jaroslav@1455: String s = arr[count]; jaroslav@1466: if (clear) { jaroslav@1466: arr[count] = null; jaroslav@1466: } jaroslav@1455: return s; jaroslav@1455: } jaroslav@1455: jaroslav@1455: void clear() { jaroslav@1455: arr = null; jaroslav@1455: } jtulach@162: }