vm/src/main/java/org/apidesign/vm4brwsr/StringArray.java
author Martin Soch <Martin.Soch@oracle.com>
Mon, 03 Dec 2012 15:21:56 +0100
branchvm_StringArray_delete
changeset 243 041f6bf8ebbc
parent 165 5d02550c4028
child 272 a6a23aa7a546
permissions -rw-r--r--
- fix for StringArray.delete(int) method
- added test to be sure indx is in range of this.arr
     1 /**
     2  * Back 2 Browser Bytecode Translator
     3  * Copyright (C) 2012 Jaroslav Tulach <jaroslav.tulach@apidesign.org>
     4  *
     5  * This program is free software: you can redistribute it and/or modify
     6  * it under the terms of the GNU General Public License as published by
     7  * the Free Software Foundation, version 2 of the License.
     8  *
     9  * This program is distributed in the hope that it will be useful,
    10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    12  * GNU General Public License for more details.
    13  *
    14  * You should have received a copy of the GNU General Public License
    15  * along with this program. Look for COPYING file in the top folder.
    16  * If not, see http://opensource.org/licenses/GPL-2.0.
    17  */
    18 package org.apidesign.vm4brwsr;
    19 
    20 /**
    21  *
    22  * @author Jaroslav Tulach <jtulach@netbeans.org>
    23  */
    24 class StringArray {
    25     private String[] arr;
    26 
    27     public StringArray() {
    28     }
    29 
    30     private StringArray(String[] arr) {
    31         this.arr = arr;
    32     }
    33     
    34     public void add(String s) {
    35         if (arr == null) {
    36             arr = new String[1];
    37         } else {
    38             String[] tmp = new String[arr.length + 1];
    39             for (int i = 0; i < arr.length; i++) {
    40                 tmp[i] = arr[i];
    41             }
    42             arr = tmp;
    43         }
    44         arr[arr.length - 1] = s;
    45     }
    46     
    47     public String[] toArray() {
    48         return arr == null ? new String[0] : arr;
    49     }
    50     
    51     static StringArray asList(String[] names) {
    52         return new StringArray(names);
    53     }
    54 
    55     void reverse() {
    56         for (int i = 0, j = arr.length; i < j; i++) {
    57             String s = arr[i];
    58             arr[i] = arr[--j];
    59             arr[j] = s;
    60         }
    61     }
    62 
    63     boolean contains(String n) {
    64         if (arr == null) {
    65             return false;
    66         }
    67         for (int i = 0; i < arr.length; i++) {
    68             if (n.equals(arr[i])) {
    69                 return true;
    70             }
    71         }
    72         return false;
    73     }
    74 
    75     void delete(int indx) {
    76         if (arr == null || indx < 0 || indx >= arr.length) {
    77             return;
    78         }
    79         String[] tmp = new String[arr.length - 1];
    80         for (int i = 0, j = 0; i < arr.length; i++) {
    81             if (i != indx) {
    82                 tmp[j++] = arr[i];
    83             }
    84         }
    85         arr = tmp;
    86     }
    87 
    88     int indexOf(String ic) {
    89         for (int i = 0; i < arr.length; i++) {
    90             if (ic.equals(arr[i])) {
    91                 return i;
    92             }
    93         }
    94         return -1;
    95     }
    96     
    97 }