package net.sf.cram.cg;
import htsjdk.samtools.CigarElement;
import htsjdk.samtools.CigarOperator;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
class Utils {
static List<CigEl> parseCigarInto(String cigar, List<CigEl> list) {
int len = 0;
for (int i = 0; i < cigar.length(); i++) {
char ch = cigar.charAt(i);
if (Character.isDigit(ch))
len = len * 10 + Character.getNumericValue(ch);
else {
list.add(new CigEl(len, ch));
len = 0;
}
}
return list;
}
static byte[] toByteArray(ByteBuffer buf) {
buf.rewind();
byte[] bytes = new byte[buf.limit()];
buf.get(bytes);
return bytes;
}
public static String toString(ByteBuffer buf) {
int pos = buf.position();
buf.rewind();
byte[] bytes = new byte[buf.limit()];
buf.get(bytes);
buf.position(pos);
return new String(bytes);
}
public static ByteBuffer slice(ByteBuffer buf, int pos, int limit) {
int oldPos = buf.position();
buf.position(pos);
ByteBuffer result = buf.slice();
result.limit(limit - pos);
buf.position(oldPos);
return result;
}
public static void printCgList(List<CigEl> list) {
System.out.println();
for (CigEl e : list) {
System.out.println(e);
}
}
public static String toString(List<CigEl> list) {
StringBuilder sb = new StringBuilder();
for (CigEl e : list)
sb.append(Integer.toString(e.len)).append(e.op);
return sb.toString();
}
public static List<CigarElement> toCigarOperatorList(List<CigEl> list) {
List<CigarElement> result = new ArrayList<CigarElement>(list.size());
for (CigEl e : list)
result.add(new CigarElement(e.len, CigarOperator.characterToEnum(e.op)));
return result;
}
}