Mercurial > jhg
comparison src/org/tmatesoft/hg/internal/ByteVector.java @ 711:a62079bc422b
Keyword filtering that doesn't depend on input buffer size and the way input lines got split between filter() calls. KewordFilter got state to keep processed suspicious ...$ lines
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
|---|---|
| date | Fri, 11 Oct 2013 21:35:41 +0200 |
| parents | 88afffd39899 |
| children |
comparison
equal
deleted
inserted
replaced
| 710:cf200271439a | 711:a62079bc422b |
|---|---|
| 17 package org.tmatesoft.hg.internal; | 17 package org.tmatesoft.hg.internal; |
| 18 | 18 |
| 19 import java.io.ByteArrayOutputStream; | 19 import java.io.ByteArrayOutputStream; |
| 20 | 20 |
| 21 /** | 21 /** |
| 22 * Alternative to {@link ByteArrayOutputStream}, with extra operation that prevent extra byte[] instances | 22 * Alternative to {@link ByteArrayOutputStream}, with extra operation that prevent superfluous byte[] instances |
| 23 * | 23 * |
| 24 * @author Artem Tikhomirov | 24 * @author Artem Tikhomirov |
| 25 * @author TMate Software Ltd. | 25 * @author TMate Software Ltd. |
| 26 */ | 26 */ |
| 27 public class ByteVector { | 27 public class ByteVector { |
| 40 byte[] newData = new byte[count + increment]; | 40 byte[] newData = new byte[count + increment]; |
| 41 System.arraycopy(data, 0, newData, 0, count); | 41 System.arraycopy(data, 0, newData, 0, count); |
| 42 data = newData; | 42 data = newData; |
| 43 } | 43 } |
| 44 data[count++] = (byte) b; | 44 data[count++] = (byte) b; |
| 45 } | |
| 46 | |
| 47 public int indexOf(int b) { | |
| 48 for (int i = 0; i < count; i++) { | |
| 49 if (data[i] == b) { | |
| 50 return i; | |
| 51 } | |
| 52 } | |
| 53 return -1; | |
| 54 } | |
| 55 | |
| 56 public byte get(int i) { | |
| 57 if (i < 0 || i >= count) { | |
| 58 throw new IllegalArgumentException(String.valueOf(i)); | |
| 59 } | |
| 60 return data[i]; | |
| 61 } | |
| 62 | |
| 63 public boolean isEmpty() { | |
| 64 return count == 0; | |
| 45 } | 65 } |
| 46 | 66 |
| 47 public int size() { | 67 public int size() { |
| 48 return count; | 68 return count; |
| 49 } | 69 } |
| 78 public byte[] toByteArray() { | 98 public byte[] toByteArray() { |
| 79 byte[] rv = new byte[count]; | 99 byte[] rv = new byte[count]; |
| 80 copyTo(rv); | 100 copyTo(rv); |
| 81 return rv; | 101 return rv; |
| 82 } | 102 } |
| 103 | |
| 104 public byte[] toByteArray(int from, int to) { | |
| 105 if (from > to) { | |
| 106 throw new IllegalArgumentException(); | |
| 107 } | |
| 108 if (to > count) { | |
| 109 throw new IllegalArgumentException(); | |
| 110 } | |
| 111 byte[] rv = new byte[to-from]; | |
| 112 System.arraycopy(data, from, rv, 0, rv.length); | |
| 113 return rv; | |
| 114 } | |
| 83 } | 115 } |
