package org.yamcs.xtce;
/**
* For common encodings of string data
* @author mache
*
*/
public class StringDataEncoding extends DataEncoding {
private static final long serialVersionUID = 200805131551L;
public enum SizeType {Fixed, TerminationChar, LeadingSize};
private SizeType sizeType;
private byte terminationChar=0;
int sizeInBitsOfSizeTag=16;
public StringDataEncoding() {
super(-1);
}
public StringDataEncoding(String name, SizeType sizeType) {
super(-1);
this.sizeType=sizeType;
}
public void setSizeType(SizeType sizeType) {
this.sizeType = sizeType;
}
public SizeType getSizeType() {
return sizeType;
}
public int getSizeInBitsOfSizeTag(){
return sizeInBitsOfSizeTag;
}
public void setSizeInBitsOfSizeTag(int sizeInBits){
this.sizeInBitsOfSizeTag=sizeInBits;
}
public byte getTerminationChar() {
return terminationChar;
}
public void setTerminationChar(byte tc) {
this.terminationChar = tc;
}
@Override
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append("StringDataEncoding size: ");
sb.append(getSizeType()).append("(");
switch(sizeType) {
case Fixed:
sb.append("fixedSizeInBits="+getSizeInBits());
break;
case LeadingSize:
sb.append("sizeInBitsOfSizeTag="+sizeInBitsOfSizeTag);
if(getSizeInBits()!=-1) {
sb.append(", minSizeInBits="+getSizeInBits());
}
break;
case TerminationChar:
sb.append("terminationChar="+terminationChar);
if(getSizeInBits()!=-1) {
sb.append(", minSizeInBits="+getSizeInBits());
}
break;
}
sb.append(")");
return sb.toString();
}
@Override
public Object parseString(String stringValue) {
return stringValue;
}
}