StructDeclaration sDec = new StructDeclaration(1l);
StringDeclaration strDec = StringDeclaration.getStringDeclaration(Encoding.UTF8);
- IntegerDeclaration intDec = IntegerDeclaration.UINT_8_DECL;
+ IntegerDeclaration byteDec = IntegerDeclaration.UINT_8_DECL;
+ IntegerDeclaration intDec = IntegerDeclaration.INT_8_DECL;
FloatDeclaration flDec = new FloatDeclaration(8, 24,
ByteOrder.BIG_ENDIAN, 8);
- SequenceDeclaration seqDec = new SequenceDeclaration(LEN, intDec);
+ SequenceDeclaration seqDec = new SequenceDeclaration(LEN, byteDec);
StructDeclaration structDec = new StructDeclaration(8);
- EnumDeclaration enumDec = new EnumDeclaration(intDec);
+ EnumDeclaration enumDec = new EnumDeclaration(byteDec);
VariantDeclaration varDec = new VariantDeclaration();
ArrayDeclaration arrStrDec = new ArrayDeclaration(ARRAY_SIZE, strDec);
ArrayDeclaration arrFloatDec = new ArrayDeclaration(ARRAY_SIZE, flDec);
ArrayDeclaration arrVariantDec = new ArrayDeclaration(ARRAY_SIZE, varDec);
ArrayDeclaration arrEnumDec = new ArrayDeclaration(ARRAY_SIZE, enumDec);
- sDec.addField(INT, intDec);
+ sDec.addField(INT, byteDec);
bb.put(TEST_NUMBER);
sDec.addField(ARRAY_INT, arrIntDec);
bb.put(TEST_NUMBER);
}
- sDec.addField(LEN, intDec);
+ sDec.addField(LEN, byteDec);
bb.put(TEST_NUMBER);
sDec.addField(FLOAT, flDec);
bb.put(TEST_NUMBER);
structDec.addField(STR, strDec);
- structDec.addField(INT, intDec);
+ structDec.addField(INT, byteDec);
sDec.addField(STRUCT, structDec);
bb.put(testStringBytes);
bb.put((byte) 0);
bb.put(TEST_NUMBER);
}
- varDec.addField(LEN, intDec);
+ varDec.addField(LEN, byteDec);
varDec.addField(FLOAT, flDec);
varDec.setTag(ENUM);
sDec.addField(VARIANT, varDec);
CompoundDeclaration arrDecl = (CompoundDeclaration) decl;
IDeclaration elemType = null;
elemType = arrDecl.getElementType();
- if (arrayDef instanceof ByteArrayDefinition) {
- ByteArrayDefinition byteArrayDefinition = (ByteArrayDefinition) arrayDef;
- /* it's a CTFIntegerArrayField */
- int size = arrayDef.getLength();
- long[] values = new long[size];
- for (int i = 0; i < size; i++) {
- values[i] = Byte.toUnsignedLong(byteArrayDefinition.getByte(i));
- }
- field = new CTFIntegerArrayField(fieldName, values,
- 16,
- false);
-
- }
if (elemType instanceof IntegerDeclaration) {
/*
* Array of integers => CTFIntegerArrayField, unless it's a
if (elemIntType.isCharacter()) {
/* it's a CTFStringField */
field = new CTFStringField(fieldName, arrayDef.toString());
+ } else if (arrayDef instanceof ByteArrayDefinition) { // unsigned byte array
+ ByteArrayDefinition byteArrayDefinition = (ByteArrayDefinition) arrayDef;
+ /* it's a CTFIntegerArrayField */
+ int size = arrayDef.getLength();
+ long[] values = new long[size];
+ for (int i = 0; i < size; i++) {
+ values[i] = Byte.toUnsignedLong(byteArrayDefinition.getByte(i));
+ }
+ field = new CTFIntegerArrayField(fieldName, values,
+ elemIntType.getBase(),
+ elemIntType.isSigned());
+
} else {
/* it's a CTFIntegerArrayField */
int size = arrayDef.getLength();