fixes data type numbering
This commit is contained in:
parent
ceaf52bfa1
commit
23a2f8d6c8
|
@ -243,29 +243,31 @@ public class FtrDbLoader implements IWaveformDbLoader {
|
||||||
assert(sz==3);
|
assert(sz==3);
|
||||||
long name_id = cborDecoder.readInt();
|
long name_id = cborDecoder.readInt();
|
||||||
long type_id = cborDecoder.readInt();
|
long type_id = cborDecoder.readInt();
|
||||||
|
DataType type = DataType.values()[(int)type_id];
|
||||||
String attrName = strDict.get((int)name_id);
|
String attrName = strDict.get((int)name_id);
|
||||||
TxAttributeType attrType = getOrAddAttributeType(tag, type_id, attrName);
|
TxAttributeType attrType = getOrAddAttributeType(tag, type, attrName);
|
||||||
switch((int)type_id) {
|
switch(type) {
|
||||||
case 0: // BOOLEAN
|
case BOOLEAN:
|
||||||
ITxAttribute b = new TxAttribute(attrType, cborDecoder.readBoolean()?"True":"False");
|
ITxAttribute b = new TxAttribute(attrType, cborDecoder.readBoolean()?"True":"False");
|
||||||
ret.add(b);
|
ret.add(b);
|
||||||
break;
|
break;
|
||||||
case 2: // INTEGER
|
case INTEGER:
|
||||||
case 3: // UNSIGNED
|
case UNSIGNED:
|
||||||
case 10: // POINTER
|
case POINTER:
|
||||||
|
case TIME:
|
||||||
ITxAttribute a = new TxAttribute(attrType, String.valueOf(cborDecoder.readInt()));
|
ITxAttribute a = new TxAttribute(attrType, String.valueOf(cborDecoder.readInt()));
|
||||||
ret.add(a);
|
ret.add(a);
|
||||||
break;
|
break;
|
||||||
case 4: // FLOATING_POINT_NUMBER
|
case FLOATING_POINT_NUMBER:
|
||||||
case 7: // FIXED_POINT_INTEGER
|
case FIXED_POINT_INTEGER:
|
||||||
case 8: // UNSIGNED_FIXED_POINT_INTEGER
|
case UNSIGNED_FIXED_POINT_INTEGER:
|
||||||
ITxAttribute v = new TxAttribute(attrType, String.valueOf(cborDecoder.readFloat()));
|
ITxAttribute v = new TxAttribute(attrType, String.valueOf(cborDecoder.readFloat()));
|
||||||
ret.add(v);
|
ret.add(v);
|
||||||
break;
|
break;
|
||||||
case 1: // ENUMERATION
|
case ENUMERATION:
|
||||||
case 5: // BIT_VECTOR
|
case BIT_VECTOR:
|
||||||
case 6: // LOGIC_VECTOR
|
case LOGIC_VECTOR:
|
||||||
case 12: // STRING
|
case STRING:
|
||||||
ITxAttribute s = new TxAttribute(attrType, strDict.get((int)cborDecoder.readInt()));
|
ITxAttribute s = new TxAttribute(attrType, strDict.get((int)cborDecoder.readInt()));
|
||||||
ret.add(s);
|
ret.add(s);
|
||||||
break;
|
break;
|
||||||
|
@ -281,9 +283,9 @@ public class FtrDbLoader implements IWaveformDbLoader {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
private synchronized TxAttributeType getOrAddAttributeType(long tag, long type_id, String attrName) {
|
private synchronized TxAttributeType getOrAddAttributeType(long tag, DataType type, String attrName) {
|
||||||
if(!attributeTypes.containsKey(attrName)) {
|
if(!attributeTypes.containsKey(attrName)) {
|
||||||
attributeTypes.put(attrName, new TxAttributeType(attrName, DataType.values()[(int)type_id], AssociationType.values()[(int)tag-7]));
|
attributeTypes.put(attrName, new TxAttributeType(attrName, type, AssociationType.values()[(int)tag-7]));
|
||||||
}
|
}
|
||||||
TxAttributeType attrType = attributeTypes.get(attrName);
|
TxAttributeType attrType = attributeTypes.get(attrName);
|
||||||
return attrType;
|
return attrType;
|
||||||
|
@ -495,15 +497,19 @@ public class FtrDbLoader implements IWaveformDbLoader {
|
||||||
long sz = cborDecoder.readArrayLength();
|
long sz = cborDecoder.readArrayLength();
|
||||||
assert(sz==3);
|
assert(sz==3);
|
||||||
cborDecoder.readInt();
|
cborDecoder.readInt();
|
||||||
switch((int)cborDecoder.readInt()) {
|
long type_id = cborDecoder.readInt();
|
||||||
case 0: // BOOLEAN
|
switch(DataType.values()[(int)type_id]) {
|
||||||
|
case BOOLEAN:
|
||||||
cborDecoder.readBoolean();
|
cborDecoder.readBoolean();
|
||||||
break;
|
break;
|
||||||
case 4: // FLOATING_POINT_NUMBER
|
case FLOATING_POINT_NUMBER: // FLOATING_POINT_NUMBER
|
||||||
case 7: // FIXED_POINT_INTEGER
|
case FIXED_POINT_INTEGER: // FIXED_POINT_INTEGER
|
||||||
case 8: // UNSIGNED_FIXED_POINT_INTEGER
|
case UNSIGNED_FIXED_POINT_INTEGER: // UNSIGNED_FIXED_POINT_INTEGER
|
||||||
cborDecoder.readFloat();
|
cborDecoder.readFloat();
|
||||||
break;
|
break;
|
||||||
|
case NONE: // UNSIGNED_FIXED_POINT_INTEGER
|
||||||
|
LOG.warn("Unsupported data type: "+type_id);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
cborDecoder.readInt();
|
cborDecoder.readInt();
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,7 +32,18 @@ public class TxAttribute implements ITxAttribute{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DataType getDataType() {
|
public DataType getDataType() {
|
||||||
return DataType.values()[scvAttribute.getData_type()];
|
int dt = scvAttribute.getData_type();
|
||||||
|
switch(dt) {
|
||||||
|
case 12:
|
||||||
|
return DataType.STRING;
|
||||||
|
case 10:
|
||||||
|
return DataType.POINTER;
|
||||||
|
default:
|
||||||
|
if(dt<9)
|
||||||
|
return DataType.values()[dt];
|
||||||
|
else
|
||||||
|
return DataType.NONE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -14,46 +14,30 @@ package com.minres.scviewer.database;
|
||||||
* The Enum DataType.
|
* The Enum DataType.
|
||||||
*/
|
*/
|
||||||
public enum DataType {
|
public enum DataType {
|
||||||
|
|
||||||
/** The boolean. */
|
/** The boolean. */
|
||||||
BOOLEAN,
|
BOOLEAN, // bool
|
||||||
/** The enumeration. */
|
/** The enumeration. */
|
||||||
// bool
|
ENUMERATION, // enum
|
||||||
ENUMERATION,
|
|
||||||
/** The integer. */
|
/** The integer. */
|
||||||
// enum
|
INTEGER, // char, short, int, long, long long, sc_int, sc_bigint
|
||||||
INTEGER,
|
|
||||||
/** The unsigned. */
|
/** The unsigned. */
|
||||||
// char, short, int, long, long long, sc_int, sc_bigint
|
UNSIGNED, // unsigned { char, short, int, long, long long }, sc_uint, sc_biguint
|
||||||
UNSIGNED, // unsigned { char, short, int, long, long long }, sc_uint,
|
|
||||||
/** The floating point number. */
|
/** The floating point number. */
|
||||||
// sc_biguint
|
FLOATING_POINT_NUMBER, // float, double
|
||||||
FLOATING_POINT_NUMBER,
|
|
||||||
/** The bit vector. */
|
/** The bit vector. */
|
||||||
// float, double
|
BIT_VECTOR, // sc_bit, sc_bv
|
||||||
BIT_VECTOR,
|
|
||||||
/** The logic vector. */
|
/** The logic vector. */
|
||||||
// sc_bit, sc_bv
|
LOGIC_VECTOR, // sc_logic, sc_lv
|
||||||
LOGIC_VECTOR,
|
|
||||||
/** The fixed point integer. */
|
/** The fixed point integer. */
|
||||||
// sc_logic, sc_lv
|
FIXED_POINT_INTEGER, // sc_fixed
|
||||||
FIXED_POINT_INTEGER,
|
|
||||||
/** The unsigned fixed point integer. */
|
/** The unsigned fixed point integer. */
|
||||||
// sc_fixed
|
UNSIGNED_FIXED_POINT_INTEGER, // sc_ufixed
|
||||||
UNSIGNED_FIXED_POINT_INTEGER,
|
|
||||||
/** The record. */
|
|
||||||
// sc_ufixed
|
|
||||||
RECORD,
|
|
||||||
/** The pointer. */
|
/** The pointer. */
|
||||||
// struct/class
|
POINTER, // T*
|
||||||
POINTER,
|
|
||||||
/** The array. */
|
|
||||||
// T*
|
|
||||||
ARRAY,
|
|
||||||
/** The string. */
|
/** The string. */
|
||||||
// string, std::string
|
STRING, // string, std::string
|
||||||
STRING,
|
|
||||||
/** The time. */
|
/** The time. */
|
||||||
// sc_time
|
TIME, // sc_time
|
||||||
TIME
|
/** The void type. */
|
||||||
|
NONE
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue