Fixed inconsitencies

This commit is contained in:
2015-01-09 09:16:40 +01:00
parent 4062d24897
commit cb77a5da33
26 changed files with 174 additions and 73 deletions

View File

@ -0,0 +1,56 @@
package com.minres.scviewer.database;
public class BitVector {
public static final char VALUE_X = 'X';
public static final char VALUE_Z = 'Z';
public static final char VALUE_1 = '1';
public static final char VALUE_0 = '0';
private final int width;
private char[] value;
public BitVector(int netWidth) {
this.width=netWidth;
value = new char[netWidth];
for(int i=0; i<netWidth; i++) value[i]='0';
}
public void setValue(int i, char value) {
this.value[i]=value;
}
public char[] getValue() {
return value;
}
public void setValue(char[] value) {
this.value = value;
}
public int getWidth() {
return width;
}
public String toString(){
return new String(value);
}
public String toHexString(){
int resWidth=(width-1)/4+1;
char[] res = new char[resWidth];
for(int i=resWidth-1; i>=0; i--){
int digit=0;
for(int j=3; j>=0; j--){
if(value[4*i+j]==VALUE_X ||value[4*i+j]==VALUE_Z ){
res[i]=VALUE_X;
}
if(value[4*i+j]==VALUE_1)
digit+=1<<(3-j);
res[i]=Character.forDigit(digit, 16); //((digit < 10) ? '0' + digit : 'a' + digit -10)
}
}
return new String(res);
}
}

View File

@ -1,7 +1,8 @@
package com.minres.scviewer.database;
public interface ISignalChangeMulti extends ISignalChange {
public String getValue();
public BitVector getValue();
}

View File

@ -13,7 +13,7 @@ package com.minres.scviewer.database;
import java.util.Collection;
import java.util.List;
public interface ITx {
public interface ITx extends Comparable<ITx>{
public Long getId();

View File

@ -11,12 +11,13 @@
package com.minres.scviewer.database;
import java.util.List;
import java.util.NavigableSet;
public interface ITxStream extends IWaveform {
public List<ITxGenerator> getGenerators();
public List<ITx> getTransactions();
public NavigableSet<ITx> getTransactions();
public ITx getTransactionById(long id);

View File

@ -1,5 +1,7 @@
package com.minres.scviewer.database.vcd;
import com.minres.scviewer.database.BitVector;
// TODO: Auto-generated Javadoc
/**
* The Interface ITraceBuilder.

View File

@ -7,6 +7,7 @@ import java.util.List;
import java.util.Stack;
import java.util.Vector;
import com.minres.scviewer.database.BitVector;
import com.minres.scviewer.database.EventTime;
import com.minres.scviewer.database.HierNode;
import com.minres.scviewer.database.ISignal;
@ -54,8 +55,8 @@ public class VCDDb extends HierNode implements IWaveformDb, IVCDDatabaseBuilder
* @see com.minres.scviewer.database.ITrDb#getStreamByName(java.lang.String)
*/
@Override
public ITxStream getStreamByName(String name) {
return null;
public IWaveform getStreamByName(String name) {
return waveformLookup.get(name);
}
/* (non-Javadoc)
@ -163,7 +164,7 @@ public class VCDDb extends HierNode implements IWaveformDb, IVCDDatabaseBuilder
VCDSignalChangeSingle change = new VCDSignalChangeSingle(time, decodedValues.getValue()[0]);
((VCDSignal<ISignalChangeSingle>)signal).addSignalChange(change);
} else {
VCDSignalChangeMulti change = new VCDSignalChangeMulti(time, new String(decodedValues.getValue()));
VCDSignalChangeMulti change = new VCDSignalChangeMulti(time, decodedValues);
((VCDSignal<VCDSignalChangeMulti>)signal).addSignalChange(change);
}
maxTime= Math.max(maxTime, fCurrentTime);

View File

@ -3,6 +3,8 @@ package com.minres.scviewer.database.vcd;
import java.io.*;
import java.util.*;
import com.minres.scviewer.database.BitVector;
class VCDFileParser {
private StreamTokenizer tokenizer;
private IVCDDatabaseBuilder traceBuilder;

View File

@ -1,27 +1,28 @@
package com.minres.scviewer.database.vcd;
import com.minres.scviewer.database.BitVector;
import com.minres.scviewer.database.EventTime;
import com.minres.scviewer.database.ISignalChangeMulti;
import com.minres.scviewer.database.SignalChange;
public class VCDSignalChangeMulti extends SignalChange implements ISignalChangeMulti, Cloneable {
private String value;
private BitVector value;
public VCDSignalChangeMulti(EventTime time) {
super(time);
}
public VCDSignalChangeMulti(EventTime time, String value) {
public VCDSignalChangeMulti(EventTime time, BitVector decodedValues) {
super(time);
this.value=value;
this.value=decodedValues;
}
public String getValue() {
public BitVector getValue() {
return value;
}
public void setValue(String value) {
public void setValue(BitVector value) {
this.value = value;
}