@@ -100,6 +100,100 @@ public String next() {
100
100
}
101
101
}
102
102
103
+ public static class ByteBased implements StringValues {
104
+
105
+ private final ByteValues values ;
106
+
107
+ private final StringArrayRef arrayScratch = new StringArrayRef (new String [1 ], 1 );
108
+ private final ValuesIter valuesIter = new ValuesIter ();
109
+ private final Proc proc = new Proc ();
110
+
111
+ public ByteBased (ByteValues values ) {
112
+ this .values = values ;
113
+ }
114
+
115
+ @ Override
116
+ public boolean isMultiValued () {
117
+ return values .isMultiValued ();
118
+ }
119
+
120
+ @ Override
121
+ public boolean hasValue (int docId ) {
122
+ return values .hasValue (docId );
123
+ }
124
+
125
+ @ Override
126
+ public String getValue (int docId ) {
127
+ if (!values .hasValue (docId )) {
128
+ return null ;
129
+ }
130
+ return Byte .toString (values .getValue (docId ));
131
+ }
132
+
133
+ @ Override
134
+ public StringArrayRef getValues (int docId ) {
135
+ ByteArrayRef arrayRef = values .getValues (docId );
136
+ int size = arrayRef .size ();
137
+ if (size == 0 ) return StringArrayRef .EMPTY ;
138
+
139
+ arrayScratch .reset (size );
140
+ for (int i = arrayRef .start ; i < arrayRef .end ; i ++) {
141
+ arrayScratch .values [arrayScratch .end ++] = Byte .toString (arrayRef .values [i ]);
142
+ }
143
+ return arrayScratch ;
144
+ }
145
+
146
+ @ Override
147
+ public Iter getIter (int docId ) {
148
+ return valuesIter .reset (values .getIter (docId ));
149
+ }
150
+
151
+ @ Override
152
+ public void forEachValueInDoc (int docId , ValueInDocProc proc ) {
153
+ values .forEachValueInDoc (docId , this .proc .reset (proc ));
154
+ }
155
+
156
+ static class ValuesIter implements Iter {
157
+
158
+ private ByteValues .Iter iter ;
159
+
160
+ private ValuesIter reset (ByteValues .Iter iter ) {
161
+ this .iter = iter ;
162
+ return this ;
163
+ }
164
+
165
+ @ Override
166
+ public boolean hasNext () {
167
+ return iter .hasNext ();
168
+ }
169
+
170
+ @ Override
171
+ public String next () {
172
+ return Byte .toString (iter .next ());
173
+ }
174
+ }
175
+
176
+ static class Proc implements ByteValues .ValueInDocProc {
177
+
178
+ private ValueInDocProc proc ;
179
+
180
+ private Proc reset (ValueInDocProc proc ) {
181
+ this .proc = proc ;
182
+ return this ;
183
+ }
184
+
185
+ @ Override
186
+ public void onValue (int docId , byte value ) {
187
+ proc .onValue (docId , Byte .toString (value ));
188
+ }
189
+
190
+ @ Override
191
+ public void onMissing (int docId ) {
192
+ proc .onMissing (docId );
193
+ }
194
+ }
195
+ }
196
+
103
197
public static class ShortBased implements StringValues {
104
198
105
199
private final ShortValues values ;
0 commit comments