public String serialiseEncoder(int fieldNumber,
String fieldName,
String size,
String type) {
String javaType = RecordUtil.getType(size, type, 0);
String javaFieldName = RecordUtil.getFieldName(fieldNumber,fieldName,0);
String result = "";
if (type.startsWith("custom:"))
result = "pos += " + javaFieldName + ".serializeField( pos + " + (offset+4) + " + offset, data );";
else if (javaType.equals("short"))
result = "LittleEndian.putShort(data, " + (offset+4) + " + offset + pos, " + javaFieldName + ");";
else if (javaType.equals("short[]"))
result = "LittleEndian.putShortArray(data, " + (offset+4) + " + offset + pos, " + javaFieldName + ");";
else if (javaType.equals("int"))
result = "LittleEndian.putInt(data, " + (offset+4) + " + offset + pos, " + javaFieldName + ");";
else if (javaType.equals("byte"))
result = "data[ " + (offset+4) + " + offset + pos ] = " + javaFieldName + ";";
else if (javaType.equals("double"))
result = "LittleEndian.putDouble(data, " + (offset+4) + " + offset + pos, " + javaFieldName + ");";
else if (javaType.equals("String") && !type.equals("hbstring"))
result = "StringUtil.putUncompressedUnicode("+ javaFieldName +", data, offset + pos + 4);";
else if (javaType.equals("String") && type.equals("hbstring"))
result = "StringUtil.putUncompressedUnicodeHigh("+ javaFieldName +", data, "+(offset+4)+" + offset + pos);";
try
{
offset += Integer.parseInt(size);
}
catch (NumberFormatException ignore)
{
}
return result;
}
|