1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.accumulo.core.util;
18
19 import org.apache.accumulo.core.data.ByteSequence;
20
21 public class ByteArrayBackedCharSequence implements CharSequence {
22
23 private byte[] data;
24 private int offset;
25 private int len;
26
27 public ByteArrayBackedCharSequence(byte[] data, int offset, int len) {
28 this.data = data;
29 this.offset = offset;
30 this.len = len;
31 }
32
33 public ByteArrayBackedCharSequence(byte[] data) {
34 this(data, 0, data.length);
35 }
36
37 public ByteArrayBackedCharSequence() {
38 this(null, 0, 0);
39 }
40
41 public void set(byte[] data, int offset, int len) {
42 this.data = data;
43 this.offset = offset;
44 this.len = len;
45 }
46
47 @Override
48 public char charAt(int index) {
49 return (char) (0xff & data[offset + index]);
50 }
51
52 @Override
53 public int length() {
54 return len;
55 }
56
57 @Override
58 public CharSequence subSequence(int start, int end) {
59 return new ByteArrayBackedCharSequence(data, offset + start, end - start);
60 }
61
62 public String toString() {
63 return new String(data, offset, len);
64 }
65
66 public void set(ByteSequence bs) {
67 set(bs.getBackingArray(), bs.offset(), bs.length());
68 }
69 }