X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/core/compiler/CharOperation.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/core/compiler/CharOperation.java index ae0ed10..13acddc 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/core/compiler/CharOperation.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/core/compiler/CharOperation.java @@ -26,28 +26,37 @@ public final class CharOperation { * Constant for an empty char array with two dimensions. */ public static final char[][] NO_CHAR_CHAR = new char[0][]; - + /** - * Answers a new array with appending the suffix character at the end of the array. - *
+ * Answers a new array with appending the suffix character at the end of the + * array.
*
* For example:
*
    - *
  1. -	 *    array = { 'a', 'b' }
    -	 *    suffix = 'c'
    -	 *    => result = { 'a', 'b' , 'c' }
    +	 * 
  2. + * + *
    +	 *     array = { 'a', 'b' }
    +	 *     suffix = 'c'
    +	 *     => result = { 'a', 'b' , 'c' }
    +	 * 
    + * + *
  3. + *
  4. + * + *
    +	 *     array = null
    +	 *     suffix = 'c'
    +	 *     => result = { 'c' }
     	 * 
    + * *
  5. - *
  6. -	 *    array = null
    -	 *    suffix = 'c'
    -	 *    => result = { 'c' }
    -	 * 
  7. *
* - * @param array the array that is concanated with the suffix character - * @param suffix the suffix character + * @param array + * the array that is concanated with the suffix character + * @param suffix + * the suffix character * @return the new array */ public static final char[] append(char[] array, char suffix) { @@ -58,134 +67,174 @@ public final class CharOperation { array[length] = suffix; return array; } + /** - * Append the given subarray to append to the target array starting at the given index in the target array. - * The start of the subarray is inclusive, the end is exclusive. - * Answers a new target array if it needs to grow, otherwise answers the same target array. - *
+ * Append the given subarray to append to the target array starting at the + * given index in the target array. The start of the subarray is inclusive, + * the end is exclusive. Answers a new target array if it needs to grow, + * otherwise answers the same target array.
* For example:
*
    - *
  1. -	 *    target = { 'a', 'b', -1 }
    -	 *    index = 0
    -	 *    array = { 'c', 'd' }
    -	 *    start = 0
    -	 *    end = 1
    -	 *    => result = { 'a', 'b' , 'c' }
    -	 * 
    - *
  2. - *
  3. -	 *    target = { 'a', 'b' }
    -	 *    index = 0
    -	 *    array = { 'c', 'd' }
    -	 *    start = 0
    -	 *    end = 1
    -	 *    => result = new { 'a', 'b' , 'c', -1 }
    -	 * 
  4. - *
  5. -	 *    target = { 'a', 'b', 'c' }
    -	 *    index = 1
    -	 *    array = { 'c', 'd', 'e', 'f' }
    -	 *    start = 1
    -	 *    end = 4
    -	 *    => result = new { 'a', 'd' , 'e', 'f', -1, -1 }
    -	 * 
  6. + *
  7. + * + *
    +	 *     target = { 'a', 'b', -1 }
    +	 *     index = 0
    +	 *     array = { 'c', 'd' }
    +	 *     start = 0
    +	 *     end = 1
    +	 *     => result = { 'a', 'b' , 'c' }
    +	 * 
    + * + *
  8. + *
  9. + * + *
    +	 *     target = { 'a', 'b' }
    +	 *     index = 0
    +	 *     array = { 'c', 'd' }
    +	 *     start = 0
    +	 *     end = 1
    +	 *     => result = new { 'a', 'b' , 'c', -1 }
    +	 * 
    + * + *
  10. + *
  11. + * + *
    +	 *     target = { 'a', 'b', 'c' }
    +	 *     index = 1
    +	 *     array = { 'c', 'd', 'e', 'f' }
    +	 *     start = 1
    +	 *     end = 4
    +	 *     => result = new { 'a', 'd' , 'e', 'f', -1, -1 }
    +	 * 
    + * + *
  12. *
*/ - public static final char[] append(char[] target, int index, char[] array, int start, int end) { + public static final char[] append(char[] target, int index, char[] array, + int start, int end) { int targetLength = target.length; - int subLength = end-start; - int newTargetLength = subLength+index; + int subLength = end - start; + int newTargetLength = subLength + index; if (newTargetLength > targetLength) { - System.arraycopy(target, 0, target = new char[newTargetLength*2], 0, index); + System.arraycopy(target, 0, target = new char[newTargetLength * 2], + 0, index); } System.arraycopy(array, start, target, index, subLength); return target; } /** - * Answers the concatenation of the two arrays. It answers null if the two arrays are null. - * If the first array is null, then the second array is returned. - * If the second array is null, then the first array is returned. + * Answers the concatenation of the two arrays. It answers null if the two + * arrays are null. If the first array is null, then the second array is + * returned. If the second array is null, then the first array is returned. *
*
* For example: *
    - *
  1. -	 *    first = null
    -	 *    second = null
    -	 *    => result = null
    +	 * 
  2. + * + *
    +	 *     first = null
    +	 *     second = null
    +	 *     => result = null
     	 * 
    + * *
  3. - *
  4. -	 *    first = { { ' a' } }
    -	 *    second = null
    -	 *    => result = { { ' a' } }
    +	 * 
  5. + * + *
    +	 *     first = { { ' a' } }
    +	 *     second = null
    +	 *     => result = { { ' a' } }
     	 * 
    + * *
  6. - *
  7. -	 *    first = null
    -	 *    second = { { ' a' } }
    -	 *    => result = { { ' a' } }
    +	 * 
  8. + * + *
    +	 *     first = null
    +	 *     second = { { ' a' } }
    +	 *     => result = { { ' a' } }
     	 * 
    + * *
  9. - *
  10. -	 *    first = { { ' b' } }
    -	 *    second = { { ' a' } }
    -	 *    => result = { { ' b' }, { ' a' } }
    +	 * 
  11. + * + *
    +	 *     first = { { ' b' } }
    +	 *     second = { { ' a' } }
    +	 *     => result = { { ' b' }, { ' a' } }
     	 * 
    + * *
  12. *
* - * @param first the first array to concatenate - * @param second the second array to concatenate - * @return the concatenation of the two arrays, or null if the two arrays are null. + * @param first + * the first array to concatenate + * @param second + * the second array to concatenate + * @return the concatenation of the two arrays, or null if the two arrays + * are null. */ - public static final char[][] arrayConcat(char[][] first, char[][] second) { - if (first == null) - return second; - if (second == null) - return first; - - int length1 = first.length; - int length2 = second.length; - char[][] result = new char[length1 + length2][]; - System.arraycopy(first, 0, result, 0, length1); - System.arraycopy(second, 0, result, length1, length2); - return result; - } +// public static final char[][] arrayConcat(char[][] first, char[][] second) { +// if (first == null) +// return second; +// if (second == null) +// return first; +// +// int length1 = first.length; +// int length2 = second.length; +// char[][] result = new char[length1 + length2][]; +// System.arraycopy(first, 0, result, 0, length1); +// System.arraycopy(second, 0, result, length1, length2); +// return result; +// } /** - * Answers a new array adding the second array at the end of first array. - * It answers null if the first and second are null. - * If the first array is null, then a new array char[][] is created with second. - * If the second array is null, then the first array is returned. - *
+ * Answers a new array adding the second array at the end of first array. It + * answers null if the first and second are null. If the first array is + * null, then a new array char[][] is created with second. If the second + * array is null, then the first array is returned.
*
* For example: *
    - *
  1. -	 *    first = null
    -	 *    second = { 'a' }
    -	 *    => result = { { ' a' } }
    +	 * 
  2. + * + *
    +	 *     first = null
    +	 *     second = { 'a' }
    +	 *     => result = { { ' a' } }
     	 * 
    - *
  3. -	 *    first = { { ' a' } }
    -	 *    second = null
    -	 *    => result = { { ' a' } }
    +	 * 
    +	 * 
  4. + * + *
    +	 *     first = { { ' a' } }
    +	 *     second = null
    +	 *     => result = { { ' a' } }
     	 * 
    + * *
  5. - *
  6. -	 *    first = { { ' a' } }
    -	 *    second = { ' b' }
    -	 *    => result = { { ' a' } , { ' b' } }
    +	 * 
  7. + * + *
    +	 *     first = { { ' a' } }
    +	 *     second = { ' b' }
    +	 *     => result = { { ' a' } , { ' b' } }
     	 * 
    + * *
  8. *
* - * @param first the first array to concatenate - * @param second the array to add at the end of the first array - * @return a new array adding the second array at the end of first array, or null if the two arrays are null. + * @param first + * the first array to concatenate + * @param second + * the array to add at the end of the first array + * @return a new array adding the second array at the end of first array, or + * null if the two arrays are null. */ public static final char[][] arrayConcat(char[][] first, char[] second) { if (second == null) @@ -201,36 +250,48 @@ public final class CharOperation { } /** - * Answers the concatenation of the two arrays. It answers null if the two arrays are null. - * If the first array is null, then the second array is returned. - * If the second array is null, then the first array is returned. + * Answers the concatenation of the two arrays. It answers null if the two + * arrays are null. If the first array is null, then the second array is + * returned. If the second array is null, then the first array is returned. *
*
* For example: *
    - *
  1. -	 *    first = null
    -	 *    second = { 'a' }
    -	 *    => result = { ' a' }
    +	 * 
  2. + * + *
    +	 *     first = null
    +	 *     second = { 'a' }
    +	 *     => result = { ' a' }
     	 * 
    + * *
  3. - *
  4. -	 *    first = { ' a' }
    -	 *    second = null
    -	 *    => result = { ' a' }
    +	 * 
  5. + * + *
    +	 *     first = { ' a' }
    +	 *     second = null
    +	 *     => result = { ' a' }
     	 * 
    + * *
  6. - *
  7. -	 *    first = { ' a' }
    -	 *    second = { ' b' }
    -	 *    => result = { ' a' , ' b' }
    +	 * 
  8. + * + *
    +	 *     first = { ' a' }
    +	 *     second = { ' b' }
    +	 *     => result = { ' a' , ' b' }
     	 * 
    + * *
  9. *
* - * @param first the first array to concatenate - * @param second the second array to concatenate - * @return the concatenation of the two arrays, or null if the two arrays are null. + * @param first + * the first array to concatenate + * @param second + * the second array to concatenate + * @return the concatenation of the two arrays, or null if the two arrays + * are null. */ public static final char[] concat(char[] first, char[] second) { if (first == null) @@ -247,61 +308,77 @@ public final class CharOperation { } /** - * Answers the concatenation of the three arrays. It answers null if the three arrays are null. - * If first is null, it answers the concatenation of second and third. - * If second is null, it answers the concatenation of first and third. - * If third is null, it answers the concatenation of first and second. - *
+ * Answers the concatenation of the three arrays. It answers null if the + * three arrays are null. If first is null, it answers the concatenation of + * second and third. If second is null, it answers the concatenation of + * first and third. If third is null, it answers the concatenation of first + * and second.
*
* For example: *
    - *
  1. -	 *    first = null
    -	 *    second = { 'a' }
    -	 *    third = { 'b' }
    -	 *    => result = { ' a', 'b' }
    +	 * 
  2. + * + *
    +	 *     first = null
    +	 *     second = { 'a' }
    +	 *     third = { 'b' }
    +	 *     => result = { ' a', 'b' }
     	 * 
    + * *
  3. - *
  4. -	 *    first = { 'a' }
    -	 *    second = null
    -	 *    third = { 'b' }
    -	 *    => result = { ' a', 'b' }
    +	 * 
  5. + * + *
    +	 *     first = { 'a' }
    +	 *     second = null
    +	 *     third = { 'b' }
    +	 *     => result = { ' a', 'b' }
     	 * 
    + * *
  6. - *
  7. -	 *    first = { 'a' }
    -	 *    second = { 'b' }
    -	 *    third = null
    -	 *    => result = { ' a', 'b' }
    +	 * 
  8. + * + *
    +	 *     first = { 'a' }
    +	 *     second = { 'b' }
    +	 *     third = null
    +	 *     => result = { ' a', 'b' }
     	 * 
    + * *
  9. - *
  10. -	 *    first = null
    -	 *    second = null
    -	 *    third = null
    -	 *    => result = null
    +	 * 
  11. + * + *
    +	 *     first = null
    +	 *     second = null
    +	 *     third = null
    +	 *     => result = null
     	 * 
    + * *
  12. - *
  13. -	 *    first = { 'a' }
    -	 *    second = { 'b' }
    -	 *    third = { 'c' }
    -	 *    => result = { 'a', 'b', 'c' }
    +	 * 
  14. + * + *
    +	 *     first = { 'a' }
    +	 *     second = { 'b' }
    +	 *     third = { 'c' }
    +	 *     => result = { 'a', 'b', 'c' }
     	 * 
    + * *
  15. *
* - * @param first the first array to concatenate - * @param second the second array to concatenate - * @param third the third array to concatenate + * @param first + * the first array to concatenate + * @param second + * the second array to concatenate + * @param third + * the third array to concatenate * - * @return the concatenation of the three arrays, or null if the three arrays are null. + * @return the concatenation of the three arrays, or null if the three + * arrays are null. */ - public static final char[] concat( - char[] first, - char[] second, - char[] third) { + public static final char[] concat(char[] first, char[] second, char[] third) { if (first == null) return concat(second, third); if (second == null) @@ -320,47 +397,57 @@ public final class CharOperation { } /** - * Answers the concatenation of the two arrays inserting the separator character between the two arrays. - * It answers null if the two arrays are null. - * If the first array is null, then the second array is returned. - * If the second array is null, then the first array is returned. - *
+ * Answers the concatenation of the two arrays inserting the separator + * character between the two arrays. It answers null if the two arrays are + * null. If the first array is null, then the second array is returned. If + * the second array is null, then the first array is returned.
*
* For example: *
    - *
  1. -	 *    first = null
    -	 *    second = { 'a' }
    -	 *    separator = '/'
    -	 *    => result = { ' a' }
    +	 * 
  2. + * + *
    +	 *     first = null
    +	 *     second = { 'a' }
    +	 *     separator = '/'
    +	 *     => result = { ' a' }
     	 * 
    + * *
  3. - *
  4. -	 *    first = { ' a' }
    -	 *    second = null
    -	 *    separator = '/'
    -	 *    => result = { ' a' }
    +	 * 
  5. + * + *
    +	 *     first = { ' a' }
    +	 *     second = null
    +	 *     separator = '/'
    +	 *     => result = { ' a' }
     	 * 
    + * *
  6. - *
  7. -	 *    first = { ' a' }
    -	 *    second = { ' b' }
    -	 *    separator = '/'
    -	 *    => result = { ' a' , '/', 'b' }
    +	 * 
  8. + * + *
    +	 *     first = { ' a' }
    +	 *     second = { ' b' }
    +	 *     separator = '/'
    +	 *     => result = { ' a' , '/', 'b' }
     	 * 
    + * *
  9. *
* - * @param first the first array to concatenate - * @param second the second array to concatenate - * @param separator the character to insert - * @return the concatenation of the two arrays inserting the separator character - * between the two arrays , or null if the two arrays are null. + * @param first + * the first array to concatenate + * @param second + * the second array to concatenate + * @param separator + * the character to insert + * @return the concatenation of the two arrays inserting the separator + * character between the two arrays , or null if the two arrays are + * null. */ - public static final char[] concat( - char[] first, - char[] second, - char separator) { + public static final char[] concat(char[] first, char[] second, + char separator) { if (first == null) return second; if (second == null) @@ -381,51 +468,59 @@ public final class CharOperation { } /** - * Answers the concatenation of the three arrays inserting the sep1 character between the - * two arrays and sep2 between the last two. - * It answers null if the three arrays are null. - * If the first array is null, then it answers the concatenation of second and third inserting - * the sep2 character between them. - * If the second array is null, then the first array is returned. - *
+ * Answers the concatenation of the three arrays inserting the sep1 + * character between the two arrays and sep2 between the last two. It + * answers null if the three arrays are null. If the first array is null, + * then it answers the concatenation of second and third inserting the sep2 + * character between them. If the second array is null, then the first array + * is returned.
*
* For example: *
    - *
  1. -	 *    first = null
    -	 *    second = { 'a' }
    -	 *    separator = '/'
    -	 *    => result = { ' a' }
    +	 * 
  2. + * + *
    +	 *     first = null
    +	 *     second = { 'a' }
    +	 *     separator = '/'
    +	 *     => result = { ' a' }
     	 * 
    + * *
  3. - *
  4. -	 *    first = { ' a' }
    -	 *    second = null
    -	 *    separator = '/'
    -	 *    => result = { ' a' }
    +	 * 
  5. + * + *
    +	 *     first = { ' a' }
    +	 *     second = null
    +	 *     separator = '/'
    +	 *     => result = { ' a' }
     	 * 
    + * *
  6. - *
  7. -	 *    first = { ' a' }
    -	 *    second = { ' b' }
    -	 *    separator = '/'
    -	 *    => result = { ' a' , '/', 'b' }
    +	 * 
  8. + * + *
    +	 *     first = { ' a' }
    +	 *     second = { ' b' }
    +	 *     separator = '/'
    +	 *     => result = { ' a' , '/', 'b' }
     	 * 
    + * *
  9. *
* - * @param first the first array to concatenate - * @param second the second array to concatenate - * @param separator the character to insert - * @return the concatenation of the two arrays inserting the separator character - * between the two arrays , or null if the two arrays are null. + * @param first + * the first array to concatenate + * @param second + * the second array to concatenate + * @param separator + * the character to insert + * @return the concatenation of the two arrays inserting the separator + * character between the two arrays , or null if the two arrays are + * null. */ - public static final char[] concat( - char[] first, - char sep1, - char[] second, - char sep2, - char[] third) { + public static final char[] concat(char[] first, char sep1, char[] second, + char sep2, char[] third) { if (first == null) return concat(second, third, sep2); if (second == null) @@ -446,31 +541,41 @@ public final class CharOperation { } /** - * Answers a new array with prepending the prefix character and appending the suffix - * character at the end of the array. If array is null, it answers a new array containing the - * prefix and the suffix characters. - *
+ * Answers a new array with prepending the prefix character and appending + * the suffix character at the end of the array. If array is null, it + * answers a new array containing the prefix and the suffix characters.
*
* For example:
*
    - *
  1. -	 *    prefix = 'a'
    -	 *    array = { 'b' }
    -	 *    suffix = 'c'
    -	 *    => result = { 'a', 'b' , 'c' }
    -	 * 
    - *
  2. - *
  3. -	 *    prefix = 'a'
    -	 *    array = null
    -	 *    suffix = 'c'
    -	 *    => result = { 'a', 'c' }
    -	 * 
  4. + *
  5. + * + *
    +	 *     prefix = 'a'
    +	 *     array = { 'b' }
    +	 *     suffix = 'c'
    +	 *     => result = { 'a', 'b' , 'c' }
    +	 * 
    + * + *
  6. + *
  7. + * + *
    +	 *     prefix = 'a'
    +	 *     array = null
    +	 *     suffix = 'c'
    +	 *     => result = { 'a', 'c' }
    +	 * 
    + * + *
  8. *
* - * @param prefix the prefix character - * @param array the array that is concanated with the prefix and suffix characters - * @param suffix the suffix character + * @param prefix + * the prefix character + * @param array + * the array that is concanated with the prefix and suffix + * characters + * @param suffix + * the suffix character * @return the new array */ public static final char[] concat(char prefix, char[] array, char suffix) { @@ -484,110 +589,134 @@ public final class CharOperation { result[length + 1] = suffix; return result; } - + /** - * Answers the concatenation of the given array parts using the given separator between each - * part and appending the given name at the end. - *
+ * Answers the concatenation of the given array parts using the given + * separator between each part and appending the given name at the end.
*
* For example:
*
    - *
  1. -	 *    name = { 'c' }
    -	 *    array = { { 'a' }, { 'b' } }
    -	 *    separator = '.'
    -	 *    => result = { 'a', '.', 'b' , '.', 'c' }
    -	 * 
    - *
  2. - *
  3. -	 *    name = null
    -	 *    array = { { 'a' }, { 'b' } }
    -	 *    separator = '.'
    -	 *    => result = { 'a', '.', 'b' }
    -	 * 
  4. - *
  5. -	 *    name = { ' c' }
    -	 *    array = null
    -	 *    separator = '.'
    -	 *    => result = { 'c' }
    -	 * 
  6. + *
  7. + * + *
    +	 *     name = { 'c' }
    +	 *     array = { { 'a' }, { 'b' } }
    +	 *     separator = '.'
    +	 *     => result = { 'a', '.', 'b' , '.', 'c' }
    +	 * 
    + * + *
  8. + *
  9. + * + *
    +	 *     name = null
    +	 *     array = { { 'a' }, { 'b' } }
    +	 *     separator = '.'
    +	 *     => result = { 'a', '.', 'b' }
    +	 * 
    + * + *
  10. + *
  11. + * + *
    +	 *     name = { ' c' }
    +	 *     array = null
    +	 *     separator = '.'
    +	 *     => result = { 'c' }
    +	 * 
    + * + *
  12. *
* - * @param name the given name - * @param array the given array - * @param separator the given separator - * @return the concatenation of the given array parts using the given separator between each - * part and appending the given name at the end + * @param name + * the given name + * @param array + * the given array + * @param separator + * the given separator + * @return the concatenation of the given array parts using the given + * separator between each part and appending the given name at the + * end */ - public static final char[] concatWith( - char[] name, - char[][] array, - char separator) { - int nameLength = name == null ? 0 : name.length; - if (nameLength == 0) - return concatWith(array, separator); - - int length = array == null ? 0 : array.length; - if (length == 0) - return name; - - int size = nameLength; - int index = length; - while (--index >= 0) - if (array[index].length > 0) - size += array[index].length + 1; - char[] result = new char[size]; - index = size; - for (int i = length - 1; i >= 0; i--) { - int subLength = array[i].length; - if (subLength > 0) { - index -= subLength; - System.arraycopy(array[i], 0, result, index, subLength); - result[--index] = separator; - } - } - System.arraycopy(name, 0, result, 0, nameLength); - return result; - } +// public static final char[] concatWith(char[] name, char[][] array, +// char separator) { +// int nameLength = name == null ? 0 : name.length; +// if (nameLength == 0) +// return concatWith(array, separator); +// +// int length = array == null ? 0 : array.length; +// if (length == 0) +// return name; +// +// int size = nameLength; +// int index = length; +// while (--index >= 0) +// if (array[index].length > 0) +// size += array[index].length + 1; +// char[] result = new char[size]; +// index = size; +// for (int i = length - 1; i >= 0; i--) { +// int subLength = array[i].length; +// if (subLength > 0) { +// index -= subLength; +// System.arraycopy(array[i], 0, result, index, subLength); +// result[--index] = separator; +// } +// } +// System.arraycopy(name, 0, result, 0, nameLength); +// return result; +// } /** - * Answers the concatenation of the given array parts using the given separator between each - * part and appending the given name at the end. - *
+ * Answers the concatenation of the given array parts using the given + * separator between each part and appending the given name at the end.
*
* For example:
*
    - *
  1. -	 *    name = { 'c' }
    -	 *    array = { { 'a' }, { 'b' } }
    -	 *    separator = '.'
    -	 *    => result = { 'a', '.', 'b' , '.', 'c' }
    -	 * 
    - *
  2. - *
  3. -	 *    name = null
    -	 *    array = { { 'a' }, { 'b' } }
    -	 *    separator = '.'
    -	 *    => result = { 'a', '.', 'b' }
    -	 * 
  4. - *
  5. -	 *    name = { ' c' }
    -	 *    array = null
    -	 *    separator = '.'
    -	 *    => result = { 'c' }
    -	 * 
  6. + *
  7. + * + *
    +	 *     name = { 'c' }
    +	 *     array = { { 'a' }, { 'b' } }
    +	 *     separator = '.'
    +	 *     => result = { 'a', '.', 'b' , '.', 'c' }
    +	 * 
    + * + *
  8. + *
  9. + * + *
    +	 *     name = null
    +	 *     array = { { 'a' }, { 'b' } }
    +	 *     separator = '.'
    +	 *     => result = { 'a', '.', 'b' }
    +	 * 
    + * + *
  10. + *
  11. + * + *
    +	 *     name = { ' c' }
    +	 *     array = null
    +	 *     separator = '.'
    +	 *     => result = { 'c' }
    +	 * 
    + * + *
  12. *
* - * @param array the given array - * @param name the given name - * @param separator the given separator - * @return the concatenation of the given array parts using the given separator between each - * part and appending the given name at the end + * @param array + * the given array + * @param name + * the given name + * @param separator + * the given separator + * @return the concatenation of the given array parts using the given + * separator between each part and appending the given name at the + * end */ - public static final char[] concatWith( - char[][] array, - char[] name, - char separator) { + public static final char[] concatWith(char[][] array, char[] name, + char separator) { int nameLength = name == null ? 0 : name.length; if (nameLength == 0) return concatWith(array, separator); @@ -616,27 +745,37 @@ public final class CharOperation { } /** - * Answers the concatenation of the given array parts using the given separator between each part. - *
+ * Answers the concatenation of the given array parts using the given + * separator between each part.
*
* For example:
*
    - *
  1. -	 *    array = { { 'a' }, { 'b' } }
    -	 *    separator = '.'
    -	 *    => result = { 'a', '.', 'b' }
    +	 * 
  2. + * + *
    +	 *     array = { { 'a' }, { 'b' } }
    +	 *     separator = '.'
    +	 *     => result = { 'a', '.', 'b' }
    +	 * 
    + * + *
  3. + *
  4. + * + *
    +	 *     array = null
    +	 *     separator = '.'
    +	 *     => result = { }
     	 * 
    + * *
  5. - *
  6. -	 *    array = null
    -	 *    separator = '.'
    -	 *    => result = { }
    -	 * 
  7. *
* - * @param array the given array - * @param separator the given separator - * @return the concatenation of the given array parts using the given separator between each part + * @param array + * the given array + * @param separator + * the given separator + * @return the concatenation of the given array parts using the given + * separator between each part */ public static final char[] concatWith(char[][] array, char separator) { int length = array == null ? 0 : array.length; @@ -658,82 +797,100 @@ public final class CharOperation { while (--index >= 0) { length = array[index].length; if (length > 0) { - System.arraycopy( - array[index], - 0, - result, - (size -= length), - length); + System.arraycopy(array[index], 0, result, (size -= length), + length); if (--size >= 0) result[size] = separator; } } return result; } - + /** - * Answers true if the array contains an occurrence of character, false otherwise. + * Answers true if the array contains an occurrence of character, false + * otherwise. * *
*
* For example: *
    - *
  1. -	 *    character = 'c'
    -	 *    array = { { ' a' }, { ' b' } }
    -	 *    result => false
    +	 * 
  2. + * + *
    +	 *     character = 'c'
    +	 *     array = { { ' a' }, { ' b' } }
    +	 *     result => false
     	 * 
    + * *
  3. - *
  4. -	 *    character = 'a'
    -	 *    array = { { ' a' }, { ' b' } }
    -	 *    result => true
    +	 * 
  5. + * + *
    +	 *     character = 'a'
    +	 *     array = { { ' a' }, { ' b' } }
    +	 *     result => true
     	 * 
    + * *
  6. *
* - * @param character the character to search - * @param array the array in which the search is done - * @exception NullPointerException if array is null. + * @param character + * the character to search + * @param array + * the array in which the search is done + * @exception NullPointerException + * if array is null. * - * @return true if the array contains an occurrence of character, false otherwise. + * @return true if the array contains an occurrence of character, false + * otherwise. */ - public static final boolean contains(char character, char[][] array) { - for (int i = array.length; --i >= 0;) { - char[] subarray = array[i]; - for (int j = subarray.length; --j >= 0;) - if (subarray[j] == character) - return true; - } - return false; - } +// public static final boolean contains(char character, char[][] array) { +// for (int i = array.length; --i >= 0;) { +// char[] subarray = array[i]; +// for (int j = subarray.length; --j >= 0;) +// if (subarray[j] == character) +// return true; +// } +// return false; +// } /** - * Answers true if the array contains an occurrence of character, false otherwise. + * Answers true if the array contains an occurrence of character, false + * otherwise. * *
*
* For example: *
    - *
  1. -	 *    character = 'c'
    -	 *    array = { ' b'  }
    -	 *    result => false
    +	 * 
  2. + * + *
    +	 *     character = 'c'
    +	 *     array = { ' b'  }
    +	 *     result => false
     	 * 
    + * *
  3. - *
  4. -	 *    character = 'a'
    -	 *    array = { ' a' , ' b' }
    -	 *    result => true
    +	 * 
  5. + * + *
    +	 *     character = 'a'
    +	 *     array = { ' a' , ' b' }
    +	 *     result => true
     	 * 
    + * *
  6. *
* - * @param character the character to search - * @param array the array in which the search is done - * @exception NullPointerException if array is null. + * @param character + * the character to search + * @param array + * the array in which the search is done + * @exception NullPointerException + * if array is null. * - * @return true if the array contains an occurrence of character, false otherwise. + * @return true if the array contains an occurrence of character, false + * otherwise. */ public static final boolean contains(char character, char[] array) { for (int i = array.length; --i >= 0;) @@ -741,11 +898,12 @@ public final class CharOperation { return true; return false; } - + /** * Answers a deep copy of the toCopy array. * - * @param toCopy the array to copy + * @param toCopy + * the array to copy * @return a deep copy of the toCopy array. */ public static final char[][] deepCopy(char[][] toCopy) { @@ -762,31 +920,39 @@ public final class CharOperation { } /** - * Return true if array ends with the sequence of characters contained in toBeFound, - * otherwise false. - *
+ * Return true if array ends with the sequence of characters contained in + * toBeFound, otherwise false.
*
* For example: *
    - *
  1. -	 *    array = { 'a', 'b', 'c', 'd' }
    -	 *    toBeFound = { 'b', 'c' }
    -	 *    result => false
    +	 * 
  2. + * + *
    +	 *     array = { 'a', 'b', 'c', 'd' }
    +	 *     toBeFound = { 'b', 'c' }
    +	 *     result => false
     	 * 
    + * *
  3. - *
  4. -	 *    array = { 'a', 'b', 'c' }
    -	 *    toBeFound = { 'b', 'c' }
    -	 *    result => true
    +	 * 
  5. + * + *
    +	 *     array = { 'a', 'b', 'c' }
    +	 *     toBeFound = { 'b', 'c' }
    +	 *     result => true
     	 * 
    + * *
  6. *
* - * @param array the array to check - * @param toBeFound the array to find - * @exception NullPointerException if array is null or toBeFound is null - * @return true if array ends with the sequence of characters contained in toBeFound, - * otherwise false. + * @param array + * the array to check + * @param toBeFound + * the array to find + * @exception NullPointerException + * if array is null or toBeFound is null + * @return true if array ends with the sequence of characters contained in + * toBeFound, otherwise false. */ public static final boolean endsWith(char[] array, char[] toBeFound) { int i = toBeFound.length; @@ -801,40 +967,55 @@ public final class CharOperation { } /** - * Answers true if the two arrays are identical character by character, otherwise false. - * The equality is case sensitive. - *
+ * Answers true if the two arrays are identical character by character, + * otherwise false. The equality is case sensitive.
*
* For example: *
    - *
  1. -	 *    first = null
    -	 *    second = null
    -	 *    result => true
    +	 * 
  2. + * + *
    +	 *     first = null
    +	 *     second = null
    +	 *     result => true
     	 * 
    + * *
  3. - *
  4. -	 *    first = { { } }
    -	 *    second = null
    -	 *    result => false
    +	 * 
  5. + * + *
    +	 *     first = { { } }
    +	 *     second = null
    +	 *     result => false
     	 * 
    + * *
  6. - *
  7. -	 *    first = { { 'a' } }
    -	 *    second = { { 'a' } }
    -	 *    result => true
    +	 * 
  8. + * + *
    +	 *     first = { { 'a' } }
    +	 *     second = { { 'a' } }
    +	 *     result => true
     	 * 
    + * *
  9. - *
  10. -	 *    first = { { 'A' } }
    -	 *    second = { { 'a' } }
    -	 *    result => false
    +	 * 
  11. + * + *
    +	 *     first = { { 'A' } }
    +	 *     second = { { 'a' } }
    +	 *     result => false
     	 * 
    + * *
  12. *
- * @param first the first array - * @param second the second array - * @return true if the two arrays are identical character by character, otherwise false + * + * @param first + * the first array + * @param second + * the second array + * @return true if the two arrays are identical character by character, + * otherwise false */ public static final boolean equals(char[][] first, char[][] second) { if (first == second) @@ -851,106 +1032,133 @@ public final class CharOperation { } /** - * If isCaseSensite is true, answers true if the two arrays are identical character - * by character, otherwise false. - * If it is false, answers true if the two arrays are identical character by - * character without checking the case, otherwise false. - *
+ * If isCaseSensite is true, answers true if the two arrays are identical + * character by character, otherwise false. If it is false, answers true if + * the two arrays are identical character by character without checking the + * case, otherwise false.
*
* For example: *
    - *
  1. -	 *    first = null
    -	 *    second = null
    -	 *    isCaseSensitive = true
    -	 *    result => true
    +	 * 
  2. + * + *
    +	 *     first = null
    +	 *     second = null
    +	 *     isCaseSensitive = true
    +	 *     result => true
     	 * 
    + * *
  3. - *
  4. -	 *    first = { { } }
    -	 *    second = null
    -	 *    isCaseSensitive = true
    -	 *    result => false
    +	 * 
  5. + * + *
    +	 *     first = { { } }
    +	 *     second = null
    +	 *     isCaseSensitive = true
    +	 *     result => false
     	 * 
    + * *
  6. - *
  7. -	 *    first = { { 'A' } }
    -	 *    second = { { 'a' } }
    -	 *    isCaseSensitive = true
    -	 *    result => false
    +	 * 
  8. + * + *
    +	 *     first = { { 'A' } }
    +	 *     second = { { 'a' } }
    +	 *     isCaseSensitive = true
    +	 *     result => false
     	 * 
    + * *
  9. - *
  10. -	 *    first = { { 'A' } }
    -	 *    second = { { 'a' } }
    -	 *    isCaseSensitive = false
    -	 *    result => true
    +	 * 
  11. + * + *
    +	 *     first = { { 'A' } }
    +	 *     second = { { 'a' } }
    +	 *     isCaseSensitive = false
    +	 *     result => true
     	 * 
    + * *
  12. *
* - * @param first the first array - * @param second the second array - * @param isCaseSensitive check whether or not the equality should be case sensitive - * @return true if the two arrays are identical character by character according to the value - * of isCaseSensitive, otherwise false + * @param first + * the first array + * @param second + * the second array + * @param isCaseSensitive + * check whether or not the equality should be case sensitive + * @return true if the two arrays are identical character by character + * according to the value of isCaseSensitive, otherwise false */ - public static final boolean equals( - char[][] first, - char[][] second, - boolean isCaseSensitive) { - - if (isCaseSensitive) { - return equals(first, second); - } - if (first == second) - return true; - if (first == null || second == null) - return false; - if (first.length != second.length) - return false; - - for (int i = first.length; --i >= 0;) - if (!equals(first[i], second[i], false)) - return false; - return true; - } +// public static final boolean equals(char[][] first, char[][] second, +// boolean isCaseSensitive) { +// +// if (isCaseSensitive) { +// return equals(first, second); +// } +// if (first == second) +// return true; +// if (first == null || second == null) +// return false; +// if (first.length != second.length) +// return false; +// +// for (int i = first.length; --i >= 0;) +// if (!equals(first[i], second[i], false)) +// return false; +// return true; +// } /** - * Answers true if the two arrays are identical character by character, otherwise false. - * The equality is case sensitive. - *
+ * Answers true if the two arrays are identical character by character, + * otherwise false. The equality is case sensitive.
*
* For example: *
    - *
  1. -	 *    first = null
    -	 *    second = null
    -	 *    result => true
    +	 * 
  2. + * + *
    +	 *     first = null
    +	 *     second = null
    +	 *     result => true
     	 * 
    + * *
  3. - *
  4. -	 *    first = { }
    -	 *    second = null
    -	 *    result => false
    +	 * 
  5. + * + *
    +	 *     first = { }
    +	 *     second = null
    +	 *     result => false
     	 * 
    + * *
  6. - *
  7. -	 *    first = { 'a' }
    -	 *    second = { 'a' }
    -	 *    result => true
    +	 * 
  8. + * + *
    +	 *     first = { 'a' }
    +	 *     second = { 'a' }
    +	 *     result => true
     	 * 
    + * *
  9. - *
  10. -	 *    first = { 'a' }
    -	 *    second = { 'A' }
    -	 *    result => false
    +	 * 
  11. + * + *
    +	 *     first = { 'a' }
    +	 *     second = { 'A' }
    +	 *     result => false
     	 * 
    + * *
  12. *
- * @param first the first array - * @param second the second array - * @return true if the two arrays are identical character by character, otherwise false + * + * @param first + * the first array + * @param second + * the second array + * @return true if the two arrays are identical character by character, + * otherwise false */ public static final boolean equals(char[] first, char[] second) { if (first == second) @@ -967,54 +1175,66 @@ public final class CharOperation { } /** - * If isCaseSensite is true, answers true if the two arrays are identical character - * by character, otherwise false. - * If it is false, answers true if the two arrays are identical character by - * character without checking the case, otherwise false. - *
+ * If isCaseSensite is true, answers true if the two arrays are identical + * character by character, otherwise false. If it is false, answers true if + * the two arrays are identical character by character without checking the + * case, otherwise false.
*
* For example: *
    - *
  1. -	 *    first = null
    -	 *    second = null
    -	 *    isCaseSensitive = true
    -	 *    result => true
    +	 * 
  2. + * + *
    +	 *     first = null
    +	 *     second = null
    +	 *     isCaseSensitive = true
    +	 *     result => true
     	 * 
    + * *
  3. - *
  4. -	 *    first = { }
    -	 *    second = null
    -	 *    isCaseSensitive = true
    -	 *    result => false
    +	 * 
  5. + * + *
    +	 *     first = { }
    +	 *     second = null
    +	 *     isCaseSensitive = true
    +	 *     result => false
     	 * 
    + * *
  6. - *
  7. -	 *    first = { 'A' }
    -	 *    second = { 'a' }
    -	 *    isCaseSensitive = true
    -	 *    result => false
    +	 * 
  8. + * + *
    +	 *     first = { 'A' }
    +	 *     second = { 'a' }
    +	 *     isCaseSensitive = true
    +	 *     result => false
     	 * 
    + * *
  9. - *
  10. -	 *    first = { 'A' }
    -	 *    second = { 'a' }
    -	 *    isCaseSensitive = false
    -	 *    result => true
    +	 * 
  11. + * + *
    +	 *     first = { 'A' }
    +	 *     second = { 'a' }
    +	 *     isCaseSensitive = false
    +	 *     result => true
     	 * 
    + * *
  12. *
* - * @param first the first array - * @param second the second array - * @param isCaseSensitive check whether or not the equality should be case sensitive - * @return true if the two arrays are identical character by character according to the value - * of isCaseSensitive, otherwise false + * @param first + * the first array + * @param second + * the second array + * @param isCaseSensitive + * check whether or not the equality should be case sensitive + * @return true if the two arrays are identical character by character + * according to the value of isCaseSensitive, otherwise false */ - public static final boolean equals( - char[] first, - char[] second, - boolean isCaseSensitive) { + public static final boolean equals(char[] first, char[] second, + boolean isCaseSensitive) { if (isCaseSensitive) { return equals(first, second); @@ -1027,83 +1247,98 @@ public final class CharOperation { return false; for (int i = first.length; --i >= 0;) - if (Character.toLowerCase(first[i]) - != Character.toLowerCase(second[i])) + if (Character.toLowerCase(first[i]) != Character + .toLowerCase(second[i])) return false; return true; } + /** - * If isCaseSensite is true, the equality is case sensitive, otherwise it is case insensitive. + * If isCaseSensite is true, the equality is case sensitive, otherwise it is + * case insensitive. * - * Answers true if the name contains the fragment at the starting index startIndex, otherwise false. - *
+ * Answers true if the name contains the fragment at the starting index + * startIndex, otherwise false.
*
* For example: *
    - *
  1. -	 *    fragment = { 'b', 'c' , 'd' }
    -	 *    name = { 'a', 'b', 'c' , 'd' }
    -	 *    startIndex = 1
    -	 *    isCaseSensitive = true
    -	 *    result => true
    +	 * 
  2. + * + *
    +	 *     fragment = { 'b', 'c' , 'd' }
    +	 *     name = { 'a', 'b', 'c' , 'd' }
    +	 *     startIndex = 1
    +	 *     isCaseSensitive = true
    +	 *     result => true
     	 * 
    + * *
  3. - *
  4. -	 *    fragment = { 'b', 'c' , 'd' }
    -	 *    name = { 'a', 'b', 'C' , 'd' }
    -	 *    startIndex = 1
    -	 *    isCaseSensitive = true
    -	 *    result => false
    +	 * 
  5. + * + *
    +	 *     fragment = { 'b', 'c' , 'd' }
    +	 *     name = { 'a', 'b', 'C' , 'd' }
    +	 *     startIndex = 1
    +	 *     isCaseSensitive = true
    +	 *     result => false
     	 * 
    + * *
  6. - *
  7. -	 *    fragment = { 'b', 'c' , 'd' }
    -	 *    name = { 'a', 'b', 'C' , 'd' }
    -	 *    startIndex = 0
    -	 *    isCaseSensitive = false
    -	 *    result => false
    +	 * 
  8. + * + *
    +	 *     fragment = { 'b', 'c' , 'd' }
    +	 *     name = { 'a', 'b', 'C' , 'd' }
    +	 *     startIndex = 0
    +	 *     isCaseSensitive = false
    +	 *     result => false
     	 * 
    + * *
  9. - *
  10. -	 *    fragment = { 'b', 'c' , 'd' }
    -	 *    name = { 'a', 'b'}
    -	 *    startIndex = 0
    -	 *    isCaseSensitive = true
    -	 *    result => false
    +	 * 
  11. + * + *
    +	 *     fragment = { 'b', 'c' , 'd' }
    +	 *     name = { 'a', 'b'}
    +	 *     startIndex = 0
    +	 *     isCaseSensitive = true
    +	 *     result => false
     	 * 
    + * *
  12. *
* - * @param fragment the fragment to check - * @param second the array to check - * @param startIndex the starting index - * @param isCaseSensitive check whether or not the equality should be case sensitive - * @return true if the name contains the fragment at the starting index startIndex according to the - * value of isCaseSensitive, otherwise false. - * @exception NullPointerException if fragment or name is null. + * @param fragment + * the fragment to check + * @param second + * the array to check + * @param startIndex + * the starting index + * @param isCaseSensitive + * check whether or not the equality should be case sensitive + * @return true if the name contains the fragment at the starting index + * startIndex according to the value of isCaseSensitive, otherwise + * false. + * @exception NullPointerException + * if fragment or name is null. */ - public static final boolean fragmentEquals( - char[] fragment, - char[] name, - int startIndex, - boolean isCaseSensitive) { + public static final boolean fragmentEquals(char[] fragment, char[] name, + int startIndex, boolean isCaseSensitive) { int max = fragment.length; if (name.length < max + startIndex) return false; if (isCaseSensitive) { - for (int i = max; - --i >= 0; - ) // assumes the prefix is not larger than the name + for (int i = max; --i >= 0;) + // assumes the prefix is not larger than the name if (fragment[i] != name[i + startIndex]) return false; return true; } - for (int i = max; - --i >= 0; - ) // assumes the prefix is not larger than the name - if (Character.toLowerCase(fragment[i]) - != Character.toLowerCase(name[i + startIndex])) + for (int i = max; --i >= 0;) + // assumes the prefix is not larger than the name + if (Character.toLowerCase(fragment[i]) != Character + .toLowerCase(name[i + startIndex])) return false; return true; } @@ -1111,9 +1346,11 @@ public final class CharOperation { /** * Answers a hashcode for the array * - * @param array the array for which a hashcode is required + * @param array + * the array for which a hashcode is required * @return the hashcode - * @exception NullPointerException if array is null + * @exception NullPointerException + * if array is null */ public static final int hashCode(char[] array) { int hash = 0; @@ -1130,66 +1367,83 @@ public final class CharOperation { } return hash & 0x7FFFFFFF; } + /** - * Answers true if c is a whitespace according to the JLS (\u000a, \u000c, \u000d, \u0009), otherwise false. - *
+ * Answers true if c is a whitespace according to the JLS (\u000a, + * \u000c, \u000d, \u0009), otherwise false.
*
* For example: *
    - *
  1. -	 *    c = ' '
    -	 *    result => true
    +	 * 
  2. + * + *
    +	 *     c = ' '
    +	 *     result => true
     	 * 
    + * *
  3. - *
  4. -	 *    c = '\u3000'
    -	 *    result => false
    +	 * 
  5. + * + *
    +	 *     c = ' \u3000'
    +	 *     result => false
     	 * 
    + * *
  6. *
* - * @param c the character to check + * @param c + * the character to check * @return true if c is a whitespace according to the JLS, otherwise false. */ public static boolean isWhitespace(char c) { switch (c) { - case 10 : /* \ u000a: LINE FEED */ - case 12 : /* \ u000c: FORM FEED */ - case 13 : /* \ u000d: CARRIAGE RETURN */ - case 32 : /* \ u0020: SPACE */ - case 9 : /* \ u0009: HORIZONTAL TABULATION */ - return true; - default : - return false; + case 10: /* \ u000a: LINE FEED */ + case 12: /* \ u000c: FORM FEED */ + case 13: /* \ u000d: CARRIAGE RETURN */ + case 32: /* \ u0020: SPACE */ + case 9: /* \ u0009: HORIZONTAL TABULATION */ + return true; + default: + return false; } } - + /** - * Answers the first index in the array for which the corresponding character is - * equal to toBeFound. Answers -1 if no occurrence of this character is found. - *
+ * Answers the first index in the array for which the corresponding + * character is equal to toBeFound. Answers -1 if no occurrence of this + * character is found.
*
* For example: *
    - *
  1. -	 *    toBeFound = 'c'
    -	 *    array = { ' a', 'b', 'c', 'd' }
    -	 *    result => 2
    +	 * 
  2. + * + *
    +	 *     toBeFound = 'c'
    +	 *     array = { ' a', 'b', 'c', 'd' }
    +	 *     result => 2
     	 * 
    + * *
  3. - *
  4. -	 *    toBeFound = 'e'
    -	 *    array = { ' a', 'b', 'c', 'd' }
    -	 *    result => -1
    +	 * 
  5. + * + *
    +	 *     toBeFound = 'e'
    +	 *     array = { ' a', 'b', 'c', 'd' }
    +	 *     result => -1
     	 * 
    + * *
  6. *
* - * @param toBeFound the character to search - * @param array the array to be searched - * @return the first index in the array for which the corresponding character is - * equal to toBeFound, -1 otherwise - * @exception NullPointerException if array is null + * @param toBeFound + * the character to search + * @param array + * the array to be searched + * @return the first index in the array for which the corresponding + * character is equal to toBeFound, -1 otherwise + * @exception NullPointerException + * if array is null */ public static final int indexOf(char toBeFound, char[] array) { for (int i = 0; i < array.length; i++) @@ -1199,43 +1453,56 @@ public final class CharOperation { } /** - * Answers the first index in the array for which the corresponding character is - * equal to toBeFound starting the search at index start. - * Answers -1 if no occurrence of this character is found. - *
+ * Answers the first index in the array for which the corresponding + * character is equal to toBeFound starting the search at index start. + * Answers -1 if no occurrence of this character is found.
*
* For example: *
    - *
  1. -	 *    toBeFound = 'c'
    -	 *    array = { ' a', 'b', 'c', 'd' }
    -	 *    start = 2
    -	 *    result => 2
    +	 * 
  2. + * + *
    +	 *     toBeFound = 'c'
    +	 *     array = { ' a', 'b', 'c', 'd' }
    +	 *     start = 2
    +	 *     result => 2
     	 * 
    + * *
  3. - *
  4. -	 *    toBeFound = 'c'
    -	 *    array = { ' a', 'b', 'c', 'd' }
    -	 *    start = 3
    -	 *    result => -1
    +	 * 
  5. + * + *
    +	 *     toBeFound = 'c'
    +	 *     array = { ' a', 'b', 'c', 'd' }
    +	 *     start = 3
    +	 *     result => -1
     	 * 
    + * *
  6. - *
  7. -	 *    toBeFound = 'e'
    -	 *    array = { ' a', 'b', 'c', 'd' }
    -	 *    start = 1
    -	 *    result => -1
    +	 * 
  8. + * + *
    +	 *     toBeFound = 'e'
    +	 *     array = { ' a', 'b', 'c', 'd' }
    +	 *     start = 1
    +	 *     result => -1
     	 * 
    + * *
  9. *
* - * @param toBeFound the character to search - * @param array the array to be searched - * @param start the starting index - * @return the first index in the array for which the corresponding character is - * equal to toBeFound, -1 otherwise - * @exception NullPointerException if array is null - * @exception ArrayIndexOutOfBoundsException if start is lower than 0 + * @param toBeFound + * the character to search + * @param array + * the array to be searched + * @param start + * the starting index + * @return the first index in the array for which the corresponding + * character is equal to toBeFound, -1 otherwise + * @exception NullPointerException + * if array is null + * @exception ArrayIndexOutOfBoundsException + * if start is lower than 0 */ public static final int indexOf(char toBeFound, char[] array, int start) { for (int i = start; i < array.length; i++) @@ -1245,32 +1512,41 @@ public final class CharOperation { } /** - * Answers the last index in the array for which the corresponding character is - * equal to toBeFound starting from the end of the array. - * Answers -1 if no occurrence of this character is found. - *
+ * Answers the last index in the array for which the corresponding character + * is equal to toBeFound starting from the end of the array. Answers -1 if + * no occurrence of this character is found.
*
* For example: *
    - *
  1. -	 *    toBeFound = 'c'
    -	 *    array = { ' a', 'b', 'c', 'd' , 'c', 'e' }
    -	 *    result => 4
    +	 * 
  2. + * + *
    +	 *     toBeFound = 'c'
    +	 *     array = { ' a', 'b', 'c', 'd' , 'c', 'e' }
    +	 *     result => 4
     	 * 
    + * *
  3. - *
  4. -	 *    toBeFound = 'e'
    -	 *    array = { ' a', 'b', 'c', 'd' }
    -	 *    result => -1
    +	 * 
  5. + * + *
    +	 *     toBeFound = 'e'
    +	 *     array = { ' a', 'b', 'c', 'd' }
    +	 *     result => -1
     	 * 
    + * *
  6. *
- * - * @param toBeFound the character to search - * @param array the array to be searched - * @return the last index in the array for which the corresponding character is - * equal to toBeFound starting from the end of the array, -1 otherwise - * @exception NullPointerException if array is null + * + * @param toBeFound + * the character to search + * @param array + * the array to be searched + * @return the last index in the array for which the corresponding character + * is equal to toBeFound starting from the end of the array, -1 + * otherwise + * @exception NullPointerException + * if array is null */ public static final int lastIndexOf(char toBeFound, char[] array) { for (int i = array.length; --i >= 0;) @@ -1280,48 +1556,60 @@ public final class CharOperation { } /** - * Answers the last index in the array for which the corresponding character is - * equal to toBeFound stopping at the index startIndex. - * Answers -1 if no occurrence of this character is found. - *
+ * Answers the last index in the array for which the corresponding character + * is equal to toBeFound stopping at the index startIndex. Answers -1 if no + * occurrence of this character is found.
*
* For example: *
    - *
  1. -	 *    toBeFound = 'c'
    -	 *    array = { ' a', 'b', 'c', 'd' }
    -	 *    startIndex = 2
    -	 *    result => 2
    +	 * 
  2. + * + *
    +	 *     toBeFound = 'c'
    +	 *     array = { ' a', 'b', 'c', 'd' }
    +	 *     startIndex = 2
    +	 *     result => 2
     	 * 
    + * *
  3. - *
  4. -	 *    toBeFound = 'c'
    -	 *    array = { ' a', 'b', 'c', 'd', 'e' }
    -	 *    startIndex = 3
    -	 *    result => -1
    +	 * 
  5. + * + *
    +	 *     toBeFound = 'c'
    +	 *     array = { ' a', 'b', 'c', 'd', 'e' }
    +	 *     startIndex = 3
    +	 *     result => -1
     	 * 
    + * *
  6. - *
  7. -	 *    toBeFound = 'e'
    -	 *    array = { ' a', 'b', 'c', 'd' }
    -	 *    startIndex = 0
    -	 *    result => -1
    +	 * 
  8. + * + *
    +	 *     toBeFound = 'e'
    +	 *     array = { ' a', 'b', 'c', 'd' }
    +	 *     startIndex = 0
    +	 *     result => -1
     	 * 
    + * *
  9. *
- * - * @param toBeFound the character to search - * @param array the array to be searched - * @param startIndex the stopping index - * @return the last index in the array for which the corresponding character is - * equal to toBeFound stopping at the index startIndex, -1 otherwise - * @exception NullPointerException if array is null - * @exception ArrayIndexOutOfBoundsException if startIndex is lower than 0 + * + * @param toBeFound + * the character to search + * @param array + * the array to be searched + * @param startIndex + * the stopping index + * @return the last index in the array for which the corresponding character + * is equal to toBeFound stopping at the index startIndex, -1 + * otherwise + * @exception NullPointerException + * if array is null + * @exception ArrayIndexOutOfBoundsException + * if startIndex is lower than 0 */ - public static final int lastIndexOf( - char toBeFound, - char[] array, - int startIndex) { + public static final int lastIndexOf(char toBeFound, char[] array, + int startIndex) { for (int i = array.length; --i >= startIndex;) if (toBeFound == array[i]) return i; @@ -1329,72 +1617,88 @@ public final class CharOperation { } /** - * Answers the last index in the array for which the corresponding character is - * equal to toBeFound starting from endIndex to startIndex. - * Answers -1 if no occurrence of this character is found. - *
+ * Answers the last index in the array for which the corresponding character + * is equal to toBeFound starting from endIndex to startIndex. Answers -1 if + * no occurrence of this character is found.
*
* For example: *
    - *
  1. -	 *    toBeFound = 'c'
    -	 *    array = { ' a', 'b', 'c', 'd' }
    -	 *    startIndex = 2
    -	 *    endIndex = 2
    -	 *    result => 2
    +	 * 
  2. + * + *
    +	 *     toBeFound = 'c'
    +	 *     array = { ' a', 'b', 'c', 'd' }
    +	 *     startIndex = 2
    +	 *     endIndex = 2
    +	 *     result => 2
     	 * 
    + * *
  3. - *
  4. -	 *    toBeFound = 'c'
    -	 *    array = { ' a', 'b', 'c', 'd', 'e' }
    -	 *    startIndex = 3
    -	 *    endIndex = 4
    -	 *    result => -1
    +	 * 
  5. + * + *
    +	 *     toBeFound = 'c'
    +	 *     array = { ' a', 'b', 'c', 'd', 'e' }
    +	 *     startIndex = 3
    +	 *     endIndex = 4
    +	 *     result => -1
     	 * 
    + * *
  6. - *
  7. -	 *    toBeFound = 'e'
    -	 *    array = { ' a', 'b', 'c', 'd' }
    -	 *    startIndex = 0
    -	 *    endIndex = 3
    -	 *    result => -1
    +	 * 
  8. + * + *
    +	 *     toBeFound = 'e'
    +	 *     array = { ' a', 'b', 'c', 'd' }
    +	 *     startIndex = 0
    +	 *     endIndex = 3
    +	 *     result => -1
     	 * 
    + * *
  9. *
* - * @param toBeFound the character to search - * @param array the array to be searched - * @param startIndex the stopping index - * @param endIndex the starting index - * @return the last index in the array for which the corresponding character is - * equal to toBeFound starting from endIndex to startIndex, -1 otherwise - * @exception NullPointerException if array is null - * @exception ArrayIndexOutOfBoundsException if endIndex is greater or equals to array length or starting is lower than 0 + * @param toBeFound + * the character to search + * @param array + * the array to be searched + * @param startIndex + * the stopping index + * @param endIndex + * the starting index + * @return the last index in the array for which the corresponding character + * is equal to toBeFound starting from endIndex to startIndex, -1 + * otherwise + * @exception NullPointerException + * if array is null + * @exception ArrayIndexOutOfBoundsException + * if endIndex is greater or equals to array length or + * starting is lower than 0 */ - public static final int lastIndexOf( - char toBeFound, - char[] array, - int startIndex, - int endIndex) { + public static final int lastIndexOf(char toBeFound, char[] array, + int startIndex, int endIndex) { for (int i = endIndex; --i >= startIndex;) if (toBeFound == array[i]) return i; return -1; } - + /** - * Answers the last portion of a name given a separator. - *
+ * Answers the last portion of a name given a separator.
*
* For example, + * *
-	 * 	lastSegment("java.lang.Object".toCharArray(),'.') --> Object
+	 *  	lastSegment("java.lang.Object".toCharArray(),'.') --> Object
 	 * 
* - * @param array the array - * @param separator the given separator + * @param array + * the array + * @param separator + * the given separator * @return the last portion of a name given a separator - * @exception NullPointerException if array is null + * @exception NullPointerException + * if array is null */ final static public char[] lastSegment(char[] array, char separator) { int pos = lastIndexOf(separator, array); @@ -1404,117 +1708,130 @@ public final class CharOperation { } /** - * Answers true if the pattern matches the given name, false otherwise. This char[] pattern matching - * accepts wild-cards '*' and '?'. - * - * When not case sensitive, the pattern is assumed to already be lowercased, the - * name will be lowercased character per character as comparing. - * If name is null, the answer is false. - * If pattern is null, the answer is true if name is not null. - *
+ * Answers true if the pattern matches the given name, false otherwise. This + * char[] pattern matching accepts wild-cards '*' and '?'. + * + * When not case sensitive, the pattern is assumed to already be lowercased, + * the name will be lowercased character per character as comparing. If name + * is null, the answer is false. If pattern is null, the answer is true if + * name is not null.
*
* For example: *
    - *
  1. -	 *    pattern = { '?', 'b', '*' }
    -	 *    name = { 'a', 'b', 'c' , 'd' }
    -	 *    isCaseSensitive = true
    -	 *    result => true
    +	 * 
  2. + * + *
    +	 *     pattern = { '?', 'b', '*' }
    +	 *     name = { 'a', 'b', 'c' , 'd' }
    +	 *     isCaseSensitive = true
    +	 *     result => true
     	 * 
    + * *
  3. - *
  4. -	 *    pattern = { '?', 'b', '?' }
    -	 *    name = { 'a', 'b', 'c' , 'd' }
    -	 *    isCaseSensitive = true
    -	 *    result => false
    +	 * 
  5. + * + *
    +	 *     pattern = { '?', 'b', '?' }
    +	 *     name = { 'a', 'b', 'c' , 'd' }
    +	 *     isCaseSensitive = true
    +	 *     result => false
     	 * 
    + * *
  6. - *
  7. -	 *    pattern = { 'b', '*' }
    -	 *    name = { 'a', 'b', 'c' , 'd' }
    -	 *    isCaseSensitive = true
    -	 *    result => false
    +	 * 
  8. + * + *
    +	 *     pattern = { 'b', '*' }
    +	 *     name = { 'a', 'b', 'c' , 'd' }
    +	 *     isCaseSensitive = true
    +	 *     result => false
     	 * 
    + * *
  9. *
* - * @param pattern the given pattern - * @param name the given name - * @param isCaseSensitive flag to know whether or not the matching should be case sensitive + * @param pattern + * the given pattern + * @param name + * the given name + * @param isCaseSensitive + * flag to know whether or not the matching should be case + * sensitive * @return true if the pattern matches the given name, false otherwise */ - public static final boolean match( - char[] pattern, - char[] name, - boolean isCaseSensitive) { + public static final boolean match(char[] pattern, char[] name, + boolean isCaseSensitive) { if (name == null) return false; // null name cannot match if (pattern == null) return true; // null pattern is equivalent to '*' - return match( - pattern, - 0, - pattern.length, - name, - 0, - name.length, - isCaseSensitive); + return match(pattern, 0, pattern.length, name, 0, name.length, + isCaseSensitive); } /** - * Answers true if the a sub-pattern matches the subpart of the given name, false otherwise. - * char[] pattern matching, accepting wild-cards '*' and '?'. Can match only subset of name/pattern. - * end positions are non-inclusive. - * The subpattern is defined by the patternStart and pattternEnd positions. - * When not case sensitive, the pattern is assumed to already be lowercased, the - * name will be lowercased character per character as comparing. - *
+ * Answers true if the a sub-pattern matches the subpart of the given name, + * false otherwise. char[] pattern matching, accepting wild-cards '*' and + * '?'. Can match only subset of name/pattern. end positions are + * non-inclusive. The subpattern is defined by the patternStart and + * pattternEnd positions. When not case sensitive, the pattern is assumed to + * already be lowercased, the name will be lowercased character per + * character as comparing.
*
* For example: *
    - *
  1. -	 *    pattern = { '?', 'b', '*' }
    -	 *    patternStart = 1
    -	 *    patternEnd = 3
    -	 *    name = { 'a', 'b', 'c' , 'd' }
    -	 *    nameStart = 1
    -	 *    nameEnd = 4
    -	 *    isCaseSensitive = true
    -	 *    result => true
    -	 * 
    - *
  2. - *
  3. -	 *    pattern = { '?', 'b', '*' }
    -	 *    patternStart = 1
    -	 *    patternEnd = 2
    -	 *    name = { 'a', 'b', 'c' , 'd' }
    -	 *    nameStart = 1
    -	 *    nameEnd = 2
    -	 *    isCaseSensitive = true
    -	 *    result => false
    +	 * 
  4. + * + *
    +	 *     pattern = { '?', 'b', '*' }
    +	 *     patternStart = 1
    +	 *     patternEnd = 3
    +	 *     name = { 'a', 'b', 'c' , 'd' }
    +	 *     nameStart = 1
    +	 *     nameEnd = 4
    +	 *     isCaseSensitive = true
    +	 *     result => true
    +	 * 
    + * + *
  5. + *
  6. + * + *
    +	 *     pattern = { '?', 'b', '*' }
    +	 *     patternStart = 1
    +	 *     patternEnd = 2
    +	 *     name = { 'a', 'b', 'c' , 'd' }
    +	 *     nameStart = 1
    +	 *     nameEnd = 2
    +	 *     isCaseSensitive = true
    +	 *     result => false
     	 * 
    + * *
  7. *
* - * @param pattern the given pattern - * @param patternStart the given pattern start - * @param patternEnd the given pattern end - * @param name the given name - * @param nameStart the given name start - * @param nameEnd the given name end - * @param isCaseSensitive flag to know if the matching should be case sensitive - * @return true if the a sub-pattern matches the subpart of the given name, false otherwise + * @param pattern + * the given pattern + * @param patternStart + * the given pattern start + * @param patternEnd + * the given pattern end + * @param name + * the given name + * @param nameStart + * the given name start + * @param nameEnd + * the given name end + * @param isCaseSensitive + * flag to know if the matching should be case sensitive + * @return true if the a sub-pattern matches the subpart of the given name, + * false otherwise */ - public static final boolean match( - char[] pattern, - int patternStart, - int patternEnd, - char[] name, - int nameStart, - int nameEnd, - boolean isCaseSensitive) { + public static final boolean match(char[] pattern, int patternStart, + int patternEnd, char[] name, int nameStart, int nameEnd, + boolean isCaseSensitive) { if (name == null) return false; // null name cannot match @@ -1531,14 +1848,12 @@ public final class CharOperation { /* check first segment */ char patternChar = 0; while ((iPattern < patternEnd) - && (patternChar = pattern[iPattern]) != '*') { + && (patternChar = pattern[iPattern]) != '*') { if (iName == nameEnd) return false; - if (patternChar - != (isCaseSensitive - ? name[iName] - : Character.toLowerCase(name[iName])) - && patternChar != '?') { + if (patternChar != (isCaseSensitive ? name[iName] : Character + .toLowerCase(name[iName])) + && patternChar != '?') { return false; } iName++; @@ -1552,9 +1867,10 @@ public final class CharOperation { segmentStart = 0; // force iName check } int prefixStart = iName; - checkSegment : while (iName < nameEnd) { + checkSegment: while (iName < nameEnd) { if (iPattern == patternEnd) { - iPattern = segmentStart; // mismatch - restart current segment + iPattern = segmentStart; // mismatch - restart current + // segment iName = ++prefixStart; continue checkSegment; } @@ -1568,10 +1884,11 @@ public final class CharOperation { continue checkSegment; } /* check current name character */ - if ((isCaseSensitive ? name[iName] : Character.toLowerCase(name[iName])) - != patternChar + if ((isCaseSensitive ? name[iName] : Character + .toLowerCase(name[iName])) != patternChar && patternChar != '?') { - iPattern = segmentStart; // mismatch - restart current segment + iPattern = segmentStart; // mismatch - restart current + // segment iName = ++prefixStart; continue checkSegment; } @@ -1580,34 +1897,37 @@ public final class CharOperation { } return (segmentStart == patternEnd) - || (iName == nameEnd && iPattern == patternEnd) - || (iPattern == patternEnd - 1 && pattern[iPattern] == '*'); + || (iName == nameEnd && iPattern == patternEnd) + || (iPattern == patternEnd - 1 && pattern[iPattern] == '*'); } /** - * Answers true if the pattern matches the filepath using the pathSepatator, false otherwise. - * - * Path char[] pattern matching, accepting wild-cards '**', '*' and '?' (using Ant directory tasks - * conventions, also see "http://jakarta.apache.org/ant/manual/dirtasks.html#defaultexcludes"). - * Path pattern matching is enhancing regular pattern matching in supporting extra rule where '**' represent - * any folder combination. - * Special rules: - * - foo\ is equivalent to foo\** - * - *.php is equivalent to **\*.php - * When not case sensitive, the pattern is assumed to already be lowercased, the - * name will be lowercased character per character as comparing. - * - * @param pattern the given pattern - * @param filepath the given path - * @param isCaseSensitive to find out whether or not the matching should be case sensitive - * @param pathSeparator the given path separator - * @return true if the pattern matches the filepath using the pathSepatator, false otherwise + * Answers true if the pattern matches the filepath using the pathSepatator, + * false otherwise. + * + * Path char[] pattern matching, accepting wild-cards '**', '*' and '?' + * (using Ant directory tasks conventions, also see + * "http://jakarta.apache.org/ant/manual/dirtasks.html#defaultexcludes"). + * Path pattern matching is enhancing regular pattern matching in supporting + * extra rule where '**' represent any folder combination. Special rules: - + * foo\ is equivalent to foo\** - *.php is equivalent to **\*.php When not + * case sensitive, the pattern is assumed to already be lowercased, the name + * will be lowercased character per character as comparing. + * + * @param pattern + * the given pattern + * @param filepath + * the given path + * @param isCaseSensitive + * to find out whether or not the matching should be case + * sensitive + * @param pathSeparator + * the given path separator + * @return true if the pattern matches the filepath using the pathSepatator, + * false otherwise */ - public static final boolean pathMatch( - char[] pattern, - char[] filepath, - boolean isCaseSensitive, - char pathSeparator) { + public static final boolean pathMatch(char[] pattern, char[] filepath, + boolean isCaseSensitive, char pathSeparator) { if (filepath == null) return false; // null name cannot match @@ -1620,20 +1940,22 @@ public final class CharOperation { // offsets inside pattern int pSegmentStart, pLength = pattern.length; - if (freeLeadingDoubleStar = pattern[0] != pathSeparator){ + if (freeLeadingDoubleStar = pattern[0] != pathSeparator) { pSegmentStart = 0; } else { pSegmentStart = 1; } - int pSegmentEnd = CharOperation.indexOf(pathSeparator, pattern, pSegmentStart+1); - if (pSegmentEnd < 0) pSegmentEnd = pLength; + int pSegmentEnd = CharOperation.indexOf(pathSeparator, pattern, + pSegmentStart + 1); + if (pSegmentEnd < 0) + pSegmentEnd = pLength; // special case: pattern foo\ is equivalent to foo\** boolean freeTrailingDoubleStar = pattern[pLength - 1] == pathSeparator; // offsets inside filepath int fSegmentStart, fLength = filepath.length; - if (filepath[0] != pathSeparator){ + if (filepath[0] != pathSeparator) { fSegmentStart = 0; } else { fSegmentStart = 1; @@ -1641,145 +1963,125 @@ public final class CharOperation { if (fSegmentStart != pSegmentStart) { return false; // both must start with a separator or none. } - int fSegmentEnd = CharOperation.indexOf(pathSeparator, filepath, fSegmentStart+1); - if (fSegmentEnd < 0) fSegmentEnd = fLength; + int fSegmentEnd = CharOperation.indexOf(pathSeparator, filepath, + fSegmentStart + 1); + if (fSegmentEnd < 0) + fSegmentEnd = fLength; // first segments while (pSegmentStart < pLength - && !freeLeadingDoubleStar - && !(pSegmentEnd == pLength && freeTrailingDoubleStar - || (pSegmentEnd == pSegmentStart + 2 - && pattern[pSegmentStart] == '*' - && pattern[pSegmentStart + 1] == '*'))) { + && !freeLeadingDoubleStar + && !(pSegmentEnd == pLength && freeTrailingDoubleStar || (pSegmentEnd == pSegmentStart + 2 + && pattern[pSegmentStart] == '*' && pattern[pSegmentStart + 1] == '*'))) { if (fSegmentStart >= fLength) return false; - if (!CharOperation - .match( - pattern, - pSegmentStart, - pSegmentEnd, - filepath, - fSegmentStart, - fSegmentEnd, - isCaseSensitive)) { + if (!CharOperation.match(pattern, pSegmentStart, pSegmentEnd, + filepath, fSegmentStart, fSegmentEnd, isCaseSensitive)) { return false; } - // jump to next segment - pSegmentEnd = - CharOperation.indexOf( - pathSeparator, - pattern, + // jump to next segment + pSegmentEnd = CharOperation.indexOf(pathSeparator, pattern, pSegmentStart = pSegmentEnd + 1); // skip separator if (pSegmentEnd < 0) pSegmentEnd = pLength; - fSegmentEnd = - CharOperation.indexOf( - pathSeparator, - filepath, + fSegmentEnd = CharOperation.indexOf(pathSeparator, filepath, fSegmentStart = fSegmentEnd + 1); // skip separator - if (fSegmentEnd < 0) fSegmentEnd = fLength; + if (fSegmentEnd < 0) + fSegmentEnd = fLength; } /* check sequence of doubleStar+segment */ int pSegmentRestart; if ((pSegmentStart >= pLength && freeTrailingDoubleStar) || (pSegmentEnd == pSegmentStart + 2 - && pattern[pSegmentStart] == '*' - && pattern[pSegmentStart + 1] == '*')) { - pSegmentEnd = - CharOperation.indexOf( - pathSeparator, - pattern, + && pattern[pSegmentStart] == '*' && pattern[pSegmentStart + 1] == '*')) { + pSegmentEnd = CharOperation.indexOf(pathSeparator, pattern, pSegmentStart = pSegmentEnd + 1); // skip separator - if (pSegmentEnd < 0) pSegmentEnd = pLength; + if (pSegmentEnd < 0) + pSegmentEnd = pLength; pSegmentRestart = pSegmentStart; } else { pSegmentRestart = 0; // force fSegmentStart check } int fSegmentRestart = fSegmentStart; - checkSegment : while (fSegmentStart < fLength) { - + checkSegment: while (fSegmentStart < fLength) { + if (pSegmentStart >= pLength) { - if (freeTrailingDoubleStar) return true; + if (freeTrailingDoubleStar) + return true; // mismatch - restart current path segment - pSegmentEnd = - CharOperation.indexOf(pathSeparator, pattern, pSegmentStart = pSegmentRestart); - if (pSegmentEnd < 0) pSegmentEnd = pLength; + pSegmentEnd = CharOperation.indexOf(pathSeparator, pattern, + pSegmentStart = pSegmentRestart); + if (pSegmentEnd < 0) + pSegmentEnd = pLength; - fSegmentRestart = - CharOperation.indexOf(pathSeparator, filepath, fSegmentRestart + 1); + fSegmentRestart = CharOperation.indexOf(pathSeparator, + filepath, fSegmentRestart + 1); // skip separator if (fSegmentRestart < 0) { fSegmentRestart = fLength; } else { fSegmentRestart++; } - fSegmentEnd = - CharOperation.indexOf(pathSeparator, filepath, fSegmentStart = fSegmentRestart); - if (fSegmentEnd < 0) fSegmentEnd = fLength; + fSegmentEnd = CharOperation.indexOf(pathSeparator, filepath, + fSegmentStart = fSegmentRestart); + if (fSegmentEnd < 0) + fSegmentEnd = fLength; continue checkSegment; } - + /* path segment is ending */ if (pSegmentEnd == pSegmentStart + 2 - && pattern[pSegmentStart] == '*' - && pattern[pSegmentStart + 1] == '*') { - pSegmentEnd = - CharOperation.indexOf(pathSeparator, pattern, pSegmentStart = pSegmentEnd + 1); + && pattern[pSegmentStart] == '*' + && pattern[pSegmentStart + 1] == '*') { + pSegmentEnd = CharOperation.indexOf(pathSeparator, pattern, + pSegmentStart = pSegmentEnd + 1); // skip separator - if (pSegmentEnd < 0) pSegmentEnd = pLength; + if (pSegmentEnd < 0) + pSegmentEnd = pLength; pSegmentRestart = pSegmentStart; fSegmentRestart = fSegmentStart; - if (pSegmentStart >= pLength) return true; + if (pSegmentStart >= pLength) + return true; continue checkSegment; } /* chech current path segment */ - if (!CharOperation.match( - pattern, - pSegmentStart, - pSegmentEnd, - filepath, - fSegmentStart, - fSegmentEnd, - isCaseSensitive)) { + if (!CharOperation.match(pattern, pSegmentStart, pSegmentEnd, + filepath, fSegmentStart, fSegmentEnd, isCaseSensitive)) { // mismatch - restart current path segment - pSegmentEnd = - CharOperation.indexOf(pathSeparator, pattern, pSegmentStart = pSegmentRestart); - if (pSegmentEnd < 0) pSegmentEnd = pLength; + pSegmentEnd = CharOperation.indexOf(pathSeparator, pattern, + pSegmentStart = pSegmentRestart); + if (pSegmentEnd < 0) + pSegmentEnd = pLength; - fSegmentRestart = - CharOperation.indexOf(pathSeparator, filepath, fSegmentRestart + 1); + fSegmentRestart = CharOperation.indexOf(pathSeparator, + filepath, fSegmentRestart + 1); // skip separator if (fSegmentRestart < 0) { fSegmentRestart = fLength; } else { fSegmentRestart++; } - fSegmentEnd = - CharOperation.indexOf(pathSeparator, filepath, fSegmentStart = fSegmentRestart); - if (fSegmentEnd < 0) fSegmentEnd = fLength; + fSegmentEnd = CharOperation.indexOf(pathSeparator, filepath, + fSegmentStart = fSegmentRestart); + if (fSegmentEnd < 0) + fSegmentEnd = fLength; continue checkSegment; } - // jump to next segment - pSegmentEnd = - CharOperation.indexOf( - pathSeparator, - pattern, + // jump to next segment + pSegmentEnd = CharOperation.indexOf(pathSeparator, pattern, pSegmentStart = pSegmentEnd + 1); // skip separator if (pSegmentEnd < 0) pSegmentEnd = pLength; - fSegmentEnd = - CharOperation.indexOf( - pathSeparator, - filepath, + fSegmentEnd = CharOperation.indexOf(pathSeparator, filepath, fSegmentStart = fSegmentEnd + 1); // skip separator if (fSegmentEnd < 0) @@ -1787,38 +2089,48 @@ public final class CharOperation { } return (pSegmentRestart >= pSegmentEnd) - || (fSegmentStart >= fLength && pSegmentStart >= pLength) - || (pSegmentStart == pLength - 2 - && pattern[pSegmentStart] == '*' - && pattern[pSegmentStart + 1] == '*') - || (pSegmentStart == pLength && freeTrailingDoubleStar); + || (fSegmentStart >= fLength && pSegmentStart >= pLength) + || (pSegmentStart == pLength - 2 + && pattern[pSegmentStart] == '*' && pattern[pSegmentStart + 1] == '*') + || (pSegmentStart == pLength && freeTrailingDoubleStar); } /** - * Answers the number of occurrences of the given character in the given array, 0 if any. + * Answers the number of occurrences of the given character in the given + * array, 0 if any. * *
*
* For example: *
    - *
  1. -	 *    toBeFound = 'b'
    -	 *    array = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    -	 *    result => 3
    +	 * 
  2. + * + *
    +	 *     toBeFound = 'b'
    +	 *     array = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    +	 *     result => 3
     	 * 
    + * *
  3. - *
  4. -	 *    toBeFound = 'c'
    -	 *    array = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    -	 *    result => 0
    +	 * 
  5. + * + *
    +	 *     toBeFound = 'c'
    +	 *     array = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    +	 *     result => 0
     	 * 
    + * *
  6. *
* - * @param toBeFound the given character - * @param array the given array - * @return the number of occurrences of the given character in the given array, 0 if any - * @exception NullPointerException if array is null + * @param toBeFound + * the given character + * @param array + * the given array + * @return the number of occurrences of the given character in the given + * array, 0 if any + * @exception NullPointerException + * if array is null */ public static final int occurencesOf(char toBeFound, char[] array) { int count = 0; @@ -1829,172 +2141,203 @@ public final class CharOperation { } /** - * Answers the number of occurrences of the given character in the given array starting - * at the given index, 0 if any. + * Answers the number of occurrences of the given character in the given + * array starting at the given index, 0 if any. * *
*
* For example: *
    - *
  1. -	 *    toBeFound = 'b'
    -	 *    array = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    -	 *    start = 2
    -	 *    result => 2
    +	 * 
  2. + * + *
    +	 *     toBeFound = 'b'
    +	 *     array = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    +	 *     start = 2
    +	 *     result => 2
     	 * 
    + * *
  3. - *
  4. -	 *    toBeFound = 'c'
    -	 *    array = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    -	 *    start = 0
    -	 *    result => 0
    +	 * 
  5. + * + *
    +	 *     toBeFound = 'c'
    +	 *     array = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    +	 *     start = 0
    +	 *     result => 0
     	 * 
    + * *
  6. *
* - * @param toBeFound the given character - * @param array the given array - * @return the number of occurrences of the given character in the given array, 0 if any - * @exception NullPointerException if array is null - * @exception ArrayIndexOutOfBoundsException if start is lower than 0 + * @param toBeFound + * the given character + * @param array + * the given array + * @return the number of occurrences of the given character in the given + * array, 0 if any + * @exception NullPointerException + * if array is null + * @exception ArrayIndexOutOfBoundsException + * if start is lower than 0 */ - public static final int occurencesOf( - char toBeFound, - char[] array, - int start) { - int count = 0; - for (int i = start; i < array.length; i++) - if (toBeFound == array[i]) - count++; - return count; - } +// public static final int occurencesOf(char toBeFound, char[] array, int start) { +// int count = 0; +// for (int i = start; i < array.length; i++) +// if (toBeFound == array[i]) +// count++; +// return count; +// } /** - * Answers true if the given name starts with the given prefix, false otherwise. - * The comparison is case sensitive. - *
+ * Answers true if the given name starts with the given prefix, false + * otherwise. The comparison is case sensitive.
*
* For example: *
    - *
  1. -	 *    prefix = { 'a' , 'b' }
    -	 *    name = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    -	 *    result => true
    +	 * 
  2. + * + *
    +	 *     prefix = { 'a' , 'b' }
    +	 *     name = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    +	 *     result => true
     	 * 
    + * *
  3. - *
  4. -	 *    prefix = { 'a' , 'c' }
    -	 *    name = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    -	 *    result => false
    +	 * 
  5. + * + *
    +	 *     prefix = { 'a' , 'c' }
    +	 *     name = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    +	 *     result => false
     	 * 
    + * *
  6. *
* - * @param prefix the given prefix - * @param name the given name - * @return true if the given name starts with the given prefix, false otherwise - * @exception NullPointerException if the given name is null or if the given prefix is null + * @param prefix + * the given prefix + * @param name + * the given name + * @return true if the given name starts with the given prefix, false + * otherwise + * @exception NullPointerException + * if the given name is null or if the given prefix is null */ public static final boolean prefixEquals(char[] prefix, char[] name) { int max = prefix.length; if (name.length < max) return false; - for (int i = max; - --i >= 0; - ) // assumes the prefix is not larger than the name + for (int i = max; --i >= 0;) + // assumes the prefix is not larger than the name if (prefix[i] != name[i]) return false; return true; } /** - * Answers true if the given name starts with the given prefix, false otherwise. - * isCaseSensitive is used to find out whether or not the comparison should be case sensitive. - *
+ * Answers true if the given name starts with the given prefix, false + * otherwise. isCaseSensitive is used to find out whether or not the + * comparison should be case sensitive.
*
* For example: *
    - *
  1. -	 *    prefix = { 'a' , 'B' }
    -	 *    name = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    -	 *    isCaseSensitive = false
    -	 *    result => true
    +	 * 
  2. + * + *
    +	 *     prefix = { 'a' , 'B' }
    +	 *     name = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    +	 *     isCaseSensitive = false
    +	 *     result => true
     	 * 
    + * *
  3. - *
  4. -	 *    prefix = { 'a' , 'B' }
    -	 *    name = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    -	 *    isCaseSensitive = true
    -	 *    result => false
    +	 * 
  5. + * + *
    +	 *     prefix = { 'a' , 'B' }
    +	 *     name = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    +	 *     isCaseSensitive = true
    +	 *     result => false
     	 * 
    + * *
  6. *
* - * @param prefix the given prefix - * @param name the given name - * @param isCaseSensitive to find out whether or not the comparison should be case sensitive - * @return true if the given name starts with the given prefix, false otherwise - * @exception NullPointerException if the given name is null or if the given prefix is null + * @param prefix + * the given prefix + * @param name + * the given name + * @param isCaseSensitive + * to find out whether or not the comparison should be case + * sensitive + * @return true if the given name starts with the given prefix, false + * otherwise + * @exception NullPointerException + * if the given name is null or if the given prefix is null */ - public static final boolean prefixEquals( - char[] prefix, - char[] name, - boolean isCaseSensitive) { - - int max = prefix.length; - if (name.length < max) - return false; - if (isCaseSensitive) { - for (int i = max; - --i >= 0; - ) // assumes the prefix is not larger than the name - if (prefix[i] != name[i]) - return false; - return true; - } - - for (int i = max; - --i >= 0; - ) // assumes the prefix is not larger than the name - if (Character.toLowerCase(prefix[i]) - != Character.toLowerCase(name[i])) - return false; - return true; - } +// public static final boolean prefixEquals(char[] prefix, char[] name, +// boolean isCaseSensitive) { +// +// int max = prefix.length; +// if (name.length < max) +// return false; +// if (isCaseSensitive) { +// for (int i = max; --i >= 0;) +// // assumes the prefix is not larger than the name +// if (prefix[i] != name[i]) +// return false; +// return true; +// } +// +// for (int i = max; --i >= 0;) +// // assumes the prefix is not larger than the name +// if (Character.toLowerCase(prefix[i]) != Character +// .toLowerCase(name[i])) +// return false; +// return true; +// } /** - * Replace all occurrence of the character to be replaced with the remplacement character in the - * given array. - *
+ * Replace all occurrence of the character to be replaced with the + * remplacement character in the given array.
*
* For example: *
    - *
  1. -	 *    array = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    -	 *    toBeReplaced = 'b'
    -	 *    replacementChar = 'a'
    -	 *    result => No returned value, but array is now equals to { 'a' , 'a', 'a', 'a', 'a', 'a' }
    +	 * 
  2. + * + *
    +	 *     array = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    +	 *     toBeReplaced = 'b'
    +	 *     replacementChar = 'a'
    +	 *     result => No returned value, but array is now equals to { 'a' , 'a', 'a', 'a', 'a', 'a' }
     	 * 
    + * *
  3. - *
  4. -	 *    array = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    -	 *    toBeReplaced = 'c'
    -	 *    replacementChar = 'a'
    -	 *    result => No returned value, but array is now equals to { 'a' , 'b', 'b', 'a', 'b', 'a' }
    +	 * 
  5. + * + *
    +	 *     array = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    +	 *     toBeReplaced = 'c'
    +	 *     replacementChar = 'a'
    +	 *     result => No returned value, but array is now equals to { 'a' , 'b', 'b', 'a', 'b', 'a' }
     	 * 
    + * *
  6. *
* - * @param array the given array - * @param toBeReplaced the character to be replaced - * @param replacementChar the replacement character - * @exception NullPointerException if the given array is null + * @param array + * the given array + * @param toBeReplaced + * the character to be replaced + * @param replacementChar + * the replacement character + * @exception NullPointerException + * if the given array is null */ - public static final void replace( - char[] array, - char toBeReplaced, - char replacementChar) { + public static final void replace(char[] array, char toBeReplaced, + char replacementChar) { if (toBeReplaced != replacementChar) { for (int i = 0, max = array.length; i < max; i++) { if (array[i] == toBeReplaced) @@ -2004,39 +2347,47 @@ public final class CharOperation { } /** - * Answers a new array of characters with substitutions. No side-effect is operated on the original - * array, in case no substitution happened, then the result is the same as the - * original one. - *
+ * Answers a new array of characters with substitutions. No side-effect is + * operated on the original array, in case no substitution happened, then + * the result is the same as the original one.
*
* For example: *
    - *
  1. -	 *    array = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    -	 *    toBeReplaced = { 'b' }
    -	 *    replacementChar = { 'a', 'a' }
    -	 *    result => { 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a' }
    +	 * 
  2. + * + *
    +	 *     array = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    +	 *     toBeReplaced = { 'b' }
    +	 *     replacementChar = { 'a', 'a' }
    +	 *     result => { 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a' }
     	 * 
    + * *
  3. - *
  4. -	 *    array = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    -	 *    toBeReplaced = { 'c' }
    -	 *    replacementChar = { 'a' }
    -	 *    result => { 'a' , 'b', 'b', 'a', 'b', 'a' }
    +	 * 
  5. + * + *
    +	 *     array = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    +	 *     toBeReplaced = { 'c' }
    +	 *     replacementChar = { 'a' }
    +	 *     result => { 'a' , 'b', 'b', 'a', 'b', 'a' }
     	 * 
    + * *
  6. *
* - * @param the given array - * @param toBeReplaced characters to be replaced - * @param the replacement characters - * @return a new array of characters with substitutions or the given array if none - * @exception NullPointerException if the given array is null + * @param the + * given array + * @param toBeReplaced + * characters to be replaced + * @param the + * replacement characters + * @return a new array of characters with substitutions or the given array + * if none + * @exception NullPointerException + * if the given array is null */ - public static final char[] replace( - char[] array, - char[] toBeReplaced, - char[] replacementChars) { + public static final char[] replace(char[] array, char[] toBeReplaced, + char[] replacementChars) { int max = array.length; int replacedLength = toBeReplaced.length; @@ -2047,7 +2398,7 @@ public final class CharOperation { if (!equals(toBeReplaced, replacementChars)) { - next : for (int i = 0; i < max; i++) { + next: for (int i = 0; i < max; i++) { int j = 0; while (j < replacedLength) { if (i + j == max) @@ -2056,33 +2407,25 @@ public final class CharOperation { continue next; } if (occurrenceCount == starts.length) { - System.arraycopy( - starts, - 0, - starts = new int[occurrenceCount * 2], - 0, - occurrenceCount); + System.arraycopy(starts, 0, + starts = new int[occurrenceCount * 2], 0, + occurrenceCount); } starts[occurrenceCount++] = i; } } if (occurrenceCount == 0) return array; - char[] result = - new char[max - + occurrenceCount * (replacementLength - replacedLength)]; + char[] result = new char[max + occurrenceCount + * (replacementLength - replacedLength)]; int inStart = 0, outStart = 0; for (int i = 0; i < occurrenceCount; i++) { int offset = starts[i] - inStart; System.arraycopy(array, inStart, result, outStart, offset); inStart += offset; outStart += offset; - System.arraycopy( - replacementChars, - 0, - result, - outStart, - replacementLength); + System.arraycopy(replacementChars, 0, result, outStart, + replacementLength); inStart += replacedLength; outStart += replacementLength; } @@ -2091,42 +2434,56 @@ public final class CharOperation { } /** - * Return a new array which is the split of the given array using the given divider and triming each subarray to remove - * whitespaces equals to ' '. + * Return a new array which is the split of the given array using the given + * divider and triming each subarray to remove whitespaces equals to ' '. *
*
* For example: *
    - *
  1. -	 *    divider = 'b'
    -	 *    array = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    -	 *    result => { { 'a' }, {  }, { 'a' }, { 'a' } }
    +	 * 
  2. + * + *
    +	 *     divider = 'b'
    +	 *     array = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    +	 *     result => { { 'a' }, {  }, { 'a' }, { 'a' } }
     	 * 
    + * *
  3. - *
  4. -	 *    divider = 'c'
    -	 *    array = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    -	 *    result => { { 'a', 'b', 'b', 'a', 'b', 'a' } }
    +	 * 
  5. + * + *
    +	 *     divider = 'c'
    +	 *     array = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    +	 *     result => { { 'a', 'b', 'b', 'a', 'b', 'a' } }
     	 * 
    + * *
  6. - *
  7. -	 *    divider = 'b'
    -	 *    array = { 'a' , ' ', 'b', 'b', 'a', 'b', 'a' }
    -	 *    result => { { 'a' }, {  }, { 'a' }, { 'a' } }
    +	 * 
  8. + * + *
    +	 *     divider = 'b'
    +	 *     array = { 'a' , ' ', 'b', 'b', 'a', 'b', 'a' }
    +	 *     result => { { 'a' }, {  }, { 'a' }, { 'a' } }
     	 * 
    + * *
  9. - *
  10. -	 *    divider = 'c'
    -	 *    array = { ' ', ' ', 'a' , 'b', 'b', 'a', 'b', 'a', ' ' }
    -	 *    result => { { 'a', 'b', 'b', 'a', 'b', 'a' } }
    +	 * 
  11. + * + *
    +	 *     divider = 'c'
    +	 *     array = { ' ', ' ', 'a' , 'b', 'b', 'a', 'b', 'a', ' ' }
    +	 *     result => { { 'a', 'b', 'b', 'a', 'b', 'a' } }
     	 * 
    + * *
  12. *
* - * @param divider the given divider - * @param array the given array - * @return a new array which is the split of the given array using the given divider and triming each subarray to remove - * whitespaces equals to ' ' + * @param divider + * the given divider + * @param array + * the given array + * @return a new array which is the split of the given array using the given + * divider and triming each subarray to remove whitespaces equals to ' ' */ public static final char[][] splitAndTrimOn(char divider, char[] array) { int length = array == null ? 0 : array.length; @@ -2147,12 +2504,8 @@ public final class CharOperation { while (end > start && array[end] == ' ') end--; split[currentWord] = new char[end - start + 1]; - System.arraycopy( - array, - start, - split[currentWord++], - 0, - end - start + 1); + System.arraycopy(array, start, split[currentWord++], 0, end + - start + 1); last = i + 1; } } @@ -2162,44 +2515,53 @@ public final class CharOperation { while (end > start && array[end] == ' ') end--; split[currentWord] = new char[end - start + 1]; - System.arraycopy( - array, - start, - split[currentWord++], - 0, - end - start + 1); + System + .arraycopy(array, start, split[currentWord++], 0, end - start + + 1); return split; } /** - * Return a new array which is the split of the given array using the given divider. - *
+ * Return a new array which is the split of the given array using the given + * divider.
*
* For example: *
    - *
  1. -	 *    divider = 'b'
    -	 *    array = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    -	 *    result => { { 'a' }, {  }, { 'a' }, { 'a' } }
    +	 * 
  2. + * + *
    +	 *     divider = 'b'
    +	 *     array = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    +	 *     result => { { 'a' }, {  }, { 'a' }, { 'a' } }
     	 * 
    + * *
  3. - *
  4. -	 *    divider = 'c'
    -	 *    array = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    -	 *    result => { { 'a', 'b', 'b', 'a', 'b', 'a' } }
    +	 * 
  5. + * + *
    +	 *     divider = 'c'
    +	 *     array = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    +	 *     result => { { 'a', 'b', 'b', 'a', 'b', 'a' } }
     	 * 
    + * *
  6. - *
  7. -	 *    divider = 'c'
    -	 *    array = { ' ', ' ', 'a' , 'b', 'b', 'a', 'b', 'a', ' ' }
    -	 *    result => { { ' ', 'a', 'b', 'b', 'a', 'b', 'a', ' ' } }
    +	 * 
  8. + * + *
    +	 *     divider = 'c'
    +	 *     array = { ' ', ' ', 'a' , 'b', 'b', 'a', 'b', 'a', ' ' }
    +	 *     result => { { ' ', 'a', 'b', 'b', 'a', 'b', 'a', ' ' } }
     	 * 
    + * *
  9. *
* - * @param divider the given divider - * @param array the given array - * @return a new array which is the split of the given array using the given divider + * @param divider + * the given divider + * @param array + * the given array + * @return a new array which is the split of the given array using the given + * divider */ public static final char[][] splitOn(char divider, char[] array) { int length = array == null ? 0 : array.length; @@ -2215,12 +2577,9 @@ public final class CharOperation { for (int i = 0; i < length; i++) { if (array[i] == divider) { split[currentWord] = new char[i - last]; - System.arraycopy( - array, - last, - split[currentWord++], - 0, - i - last); + System + .arraycopy(array, last, split[currentWord++], 0, i + - last); last = i + 1; } } @@ -2230,34 +2589,41 @@ public final class CharOperation { } /** - * Return a new array which is the split of the given array using the given divider. The given end - * is exclusive and the given start is inclusive. + * Return a new array which is the split of the given array using the given + * divider. The given end is exclusive and the given start is inclusive. *
*
* For example: *
    - *
  1. -	 *    divider = 'b'
    -	 *    array = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    -	 *    start = 2
    -	 *    end = 5
    -	 *    result => { {  }, {  }, { 'a' } }
    +	 * 
  2. + * + *
    +	 *     divider = 'b'
    +	 *     array = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    +	 *     start = 2
    +	 *     end = 5
    +	 *     result => { {  }, {  }, { 'a' } }
     	 * 
    + * *
  3. *
* - * @param divider the given divider - * @param array the given array - * @param start the given starting index - * @param end the given ending index - * @return a new array which is the split of the given array using the given divider - * @exception ArrayIndexOutOfBoundsException if start is lower than 0 or end is greater than the array length + * @param divider + * the given divider + * @param array + * the given array + * @param start + * the given starting index + * @param end + * the given ending index + * @return a new array which is the split of the given array using the given + * divider + * @exception ArrayIndexOutOfBoundsException + * if start is lower than 0 or end is greater than the array + * length */ - public static final char[][] splitOn( - char divider, - char[] array, - int start, - int end) { + public static final char[][] splitOn(char divider, char[] array, int start, + int end) { int length = array == null ? 0 : array.length; if (length == 0 || start > end) return NO_CHAR_CHAR; @@ -2271,12 +2637,9 @@ public final class CharOperation { for (int i = start; i < end; i++) { if (array[i] == divider) { split[currentWord] = new char[i - last]; - System.arraycopy( - array, - last, - split[currentWord++], - 0, - i - last); + System + .arraycopy(array, last, split[currentWord++], 0, i + - last); last = i + 1; } } @@ -2286,30 +2649,40 @@ public final class CharOperation { } /** - * Answers true if the given array starts with the given characters, false otherwise. - * The comparison is case sensitive. - *
+ * Answers true if the given array starts with the given characters, false + * otherwise. The comparison is case sensitive.
*
* For example: *
    - *
  1. -	 *    toBeFound = { 'a' , 'b' }
    -	 *    array = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    -	 *    result => true
    +	 * 
  2. + * + *
    +	 *     toBeFound = { 'a' , 'b' }
    +	 *     array = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    +	 *     result => true
     	 * 
    + * *
  3. - *
  4. -	 *    toBeFound = { 'a' , 'c' }
    -	 *    array = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    -	 *    result => false
    +	 * 
  5. + * + *
    +	 *     toBeFound = { 'a' , 'c' }
    +	 *     array = { 'a' , 'b', 'b', 'a', 'b', 'a' }
    +	 *     result => false
     	 * 
    + * *
  6. *
* - * @param array the given array - * @param toBeFound the given character to search - * @return true if the given array starts with the given characters, false otherwise - * @exception NullPointerException if the given array is null or if the given characters array to be found is null + * @param array + * the given array + * @param toBeFound + * the given character to search + * @return true if the given array starts with the given characters, false + * otherwise + * @exception NullPointerException + * if the given array is null or if the given characters + * array to be found is null */ public static final boolean startsWith(char[] array, char[] toBeFound) { int i = toBeFound.length; @@ -2320,38 +2693,48 @@ public final class CharOperation { return false; return true; } - + /** - * Answers a new array which is a copy of the given array starting at the given start and - * ending at the given end. The given start is inclusive and the given end is exclusive. - * Answers null if start is greater than end, if start is lower than 0 or if end is greater - * than the length of the given array. If end equals -1, it is converted to the array length. - *
+ * Answers a new array which is a copy of the given array starting at the + * given start and ending at the given end. The given start is inclusive and + * the given end is exclusive. Answers null if start is greater than end, if + * start is lower than 0 or if end is greater than the length of the given + * array. If end equals -1, it is converted to the array length.
*
* For example: *
    - *
  1. -	 *    array = { { 'a' } , { 'b' } }
    -	 *    start = 0
    -	 *    end = 1
    -	 *    result => { { 'a' } }
    +	 * 
  2. + * + *
    +	 *     array = { { 'a' } , { 'b' } }
    +	 *     start = 0
    +	 *     end = 1
    +	 *     result => { { 'a' } }
     	 * 
    + * *
  3. - *
  4. -	 *    array = { { 'a' } , { 'b' } }
    -	 *    start = 0
    -	 *    end = -1
    -	 *    result => { { 'a' }, { 'b' } }
    +	 * 
  5. + * + *
    +	 *     array = { { 'a' } , { 'b' } }
    +	 *     start = 0
    +	 *     end = -1
    +	 *     result => { { 'a' }, { 'b' } }
     	 * 
    + * *
  6. *
- * - * @param array the given array - * @param start the given starting index - * @param end the given ending index - * @return a new array which is a copy of the given array starting at the given start and - * ending at the given end - * @exception NullPointerException if the given array is null + * + * @param array + * the given array + * @param start + * the given starting index + * @param end + * the given ending index + * @return a new array which is a copy of the given array starting at the + * given start and ending at the given end + * @exception NullPointerException + * if the given array is null */ public static final char[][] subarray(char[][] array, int start, int end) { if (end == -1) @@ -2369,36 +2752,46 @@ public final class CharOperation { } /** - * Answers a new array which is a copy of the given array starting at the given start and - * ending at the given end. The given start is inclusive and the given end is exclusive. - * Answers null if start is greater than end, if start is lower than 0 or if end is greater - * than the length of the given array. If end equals -1, it is converted to the array length. - *
+ * Answers a new array which is a copy of the given array starting at the + * given start and ending at the given end. The given start is inclusive and + * the given end is exclusive. Answers null if start is greater than end, if + * start is lower than 0 or if end is greater than the length of the given + * array. If end equals -1, it is converted to the array length.
*
* For example: *
    - *
  1. -	 *    array = { 'a' , 'b' }
    -	 *    start = 0
    -	 *    end = 1
    -	 *    result => { 'a' }
    +	 * 
  2. + * + *
    +	 *     array = { 'a' , 'b' }
    +	 *     start = 0
    +	 *     end = 1
    +	 *     result => { 'a' }
     	 * 
    + * *
  3. - *
  4. -	 *    array = { 'a', 'b' }
    -	 *    start = 0
    -	 *    end = -1
    -	 *    result => { 'a' , 'b' }
    +	 * 
  5. + * + *
    +	 *     array = { 'a', 'b' }
    +	 *     start = 0
    +	 *     end = -1
    +	 *     result => { 'a' , 'b' }
     	 * 
    + * *
  6. *
- * - * @param array the given array - * @param start the given starting index - * @param end the given ending index - * @return a new array which is a copy of the given array starting at the given start and - * ending at the given end - * @exception NullPointerException if the given array is null + * + * @param array + * the given array + * @param start + * the given starting index + * @param end + * the given ending index + * @return a new array which is a copy of the given array starting at the + * given start and ending at the given end + * @exception NullPointerException + * if the given array is null */ public static final char[] subarray(char[] array, int start, int end) { if (end == -1) @@ -2414,27 +2807,35 @@ public final class CharOperation { System.arraycopy(array, start, result, 0, end - start); return result; } + /** - * Answers the result of a char[] conversion to lowercase. Answers null if the given chars array is null. - *
+ * Answers the result of a char[] conversion to lowercase. Answers null if + * the given chars array is null.
* NOTE: if no conversion was necessary, then answers back the argument one. *
*
* For example: *
    - *
  1. -	 *    chars = { 'a' , 'b' }
    -	 *    result => { 'a' , 'b' }
    +	 * 
  2. + * + *
    +	 *     chars = { 'a' , 'b' }
    +	 *     result => { 'a' , 'b' }
     	 * 
    + * *
  3. - *
  4. -	 *    array = { 'A', 'b' }
    -	 *    result => { 'a' , 'b' }
    +	 * 
  5. + * + *
    +	 *     array = { 'A', 'b' }
    +	 *     result => { 'a' , 'b' }
     	 * 
    + * *
  6. *
* - * @param chars the chars to convert + * @param chars + * the chars to convert * @return the result of a char[] conversion to lowercase */ final static public char[] toLowerCase(char[] chars) { @@ -2447,12 +2848,8 @@ public final class CharOperation { char lc = Character.toLowerCase(c); if ((c != lc) || (lowerChars != null)) { if (lowerChars == null) { - System.arraycopy( - chars, - 0, - lowerChars = new char[length], - 0, - i); + System.arraycopy(chars, 0, lowerChars = new char[length], + 0, i); } lowerChars[i] = lc; } @@ -2461,25 +2858,31 @@ public final class CharOperation { } /** - * Answers a new array removing leading and trailing spaces (' '). Answers the given array if there is no - * space characters to remove. - *
+ * Answers a new array removing leading and trailing spaces (' '). Answers + * the given array if there is no space characters to remove.
*
* For example: *
    - *
  1. -	 *    chars = { ' ', 'a' , 'b', ' ',  ' ' }
    -	 *    result => { 'a' , 'b' }
    +	 * 
  2. + * + *
    +	 *     chars = { ' ', 'a' , 'b', ' ',  ' ' }
    +	 *     result => { 'a' , 'b' }
     	 * 
    + * *
  3. - *
  4. -	 *    array = { 'A', 'b' }
    -	 *    result => { 'A' , 'b' }
    +	 * 
  5. + * + *
    +	 *     array = { 'A', 'b' }
    +	 *     result => { 'A' , 'b' }
     	 * 
    + * *
  6. *
* - * @param chars the given array + * @param chars + * the given array * @return a new array removing leading and trailing spaces (' ') */ final static public char[] trim(char[] chars) { @@ -2501,25 +2904,33 @@ public final class CharOperation { } /** - * Answers a string which is the concatenation of the given array using the '.' as a separator. - *
+ * Answers a string which is the concatenation of the given array using the + * '.' as a separator.
*
* For example: *
    - *
  1. -	 *    array = { { 'a' } , { 'b' } }
    -	 *    result => "a.b"
    +	 * 
  2. + * + *
    +	 *     array = { { 'a' } , { 'b' } }
    +	 *     result => "a.b"
     	 * 
    + * *
  3. - *
  4. -	 *    array = { { ' ',  'a' } , { 'b' } }
    -	 *    result => " a.b"
    +	 * 
  5. + * + *
    +	 *     array = { { ' ',  'a' } , { 'b' } }
    +	 *     result => " a.b"
     	 * 
    + * *
  6. *
* - * @param chars the given array - * @return a string which is the concatenation of the given array using the '.' as a separator + * @param chars + * the given array + * @return a string which is the concatenation of the given array using the + * '.' as a separator */ final static public String toString(char[][] array) { char[] result = concatWith(array, '.');