Added MapDB backing store for Text based Transactions, cleanup of
imports etc.
This commit is contained in:
@ -96,16 +96,15 @@ public class BitVector {
|
||||
|
||||
public long toUnsignedValue() {
|
||||
long res = 0;
|
||||
int bitOffset = width * 2;
|
||||
int wordOffset = bitOffset >> 5;
|
||||
bitOffset &= 31;
|
||||
int currentWord = packedValues[wordOffset] >> bitOffset;
|
||||
int bitOffset = 0;
|
||||
int wordOffset = 0;
|
||||
int currentWord = 0;
|
||||
// Copy values out of packed array
|
||||
for (int i = 0; i < width; i++) {
|
||||
res<<=1;
|
||||
if(bitOffset==0) currentWord = packedValues[wordOffset];
|
||||
switch (currentWord & 3) {
|
||||
case 1:
|
||||
res++;
|
||||
res|=1<<i;
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
@ -116,7 +115,6 @@ public class BitVector {
|
||||
bitOffset += 2;
|
||||
if (bitOffset == 32) {
|
||||
wordOffset++;
|
||||
currentWord = packedValues[wordOffset];
|
||||
bitOffset = 0;
|
||||
} else {
|
||||
currentWord >>= 2;
|
||||
@ -126,42 +124,46 @@ public class BitVector {
|
||||
}
|
||||
|
||||
public long toSignedValue() {
|
||||
Boolean negative=null;
|
||||
long res = 0;
|
||||
int bitOffset = width * 2;
|
||||
int wordOffset = bitOffset >> 5;
|
||||
bitOffset &= 31;
|
||||
int currentWord = packedValues[wordOffset] >> bitOffset;
|
||||
int bitOffset = 0;
|
||||
int wordOffset = 0;
|
||||
int currentWord = 0;
|
||||
int lastVal=0;
|
||||
// Copy values out of packed array
|
||||
for (int i = 0; i < width; i++) {
|
||||
if(negative == null) {
|
||||
switch (currentWord & 3) {
|
||||
case 1: negative=true; break;
|
||||
case 0: negative=false; break;
|
||||
case 2:
|
||||
case 3: return 0;
|
||||
default:
|
||||
}
|
||||
} else {
|
||||
res<<=1;
|
||||
switch (currentWord & 3) {
|
||||
case 1: if(!negative) res++; break;
|
||||
case 0: if(negative) res++; break;
|
||||
case 2:
|
||||
case 3: return 0;
|
||||
default:
|
||||
}
|
||||
if(bitOffset==0) currentWord = packedValues[wordOffset];
|
||||
lastVal=0;
|
||||
switch (currentWord & 3) {
|
||||
case 1:
|
||||
res|=1<<i;
|
||||
lastVal=1;
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
return 0;
|
||||
default:
|
||||
}
|
||||
bitOffset += 2;
|
||||
if (bitOffset == 32) {
|
||||
wordOffset++;
|
||||
currentWord = packedValues[wordOffset];
|
||||
bitOffset = 0;
|
||||
} else {
|
||||
currentWord >>= 2;
|
||||
}
|
||||
}
|
||||
return negative?-1*(res+1):res;
|
||||
for(int i=width; i<64; i++) {
|
||||
if(bitOffset==0) currentWord = packedValues[wordOffset];
|
||||
res|=lastVal<<i;
|
||||
bitOffset += 2;
|
||||
if (bitOffset == 32) {
|
||||
wordOffset++;
|
||||
bitOffset = 0;
|
||||
} else {
|
||||
currentWord >>= 2;
|
||||
}
|
||||
|
||||
}
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -24,7 +24,7 @@ public interface IWaveformDb extends IHierNode {
|
||||
|
||||
public List<RelationType> getAllRelationTypes();
|
||||
|
||||
public boolean load(File inp) throws Exception;
|
||||
public boolean load(File inp);
|
||||
|
||||
public boolean isLoaded();
|
||||
|
||||
|
@ -22,12 +22,9 @@ import java.util.Map;
|
||||
|
||||
import com.minres.scviewer.database.HierNode;
|
||||
import com.minres.scviewer.database.IHierNode;
|
||||
import com.minres.scviewer.database.ISignal;
|
||||
import com.minres.scviewer.database.ITxStream;
|
||||
import com.minres.scviewer.database.IWaveform;
|
||||
import com.minres.scviewer.database.IWaveformDb;
|
||||
import com.minres.scviewer.database.IWaveformDbLoader;
|
||||
import com.minres.scviewer.database.IWaveformEvent;
|
||||
import com.minres.scviewer.database.InputFormatException;
|
||||
import com.minres.scviewer.database.RelationType;
|
||||
|
||||
@ -82,22 +79,26 @@ public class WaveformDb extends HierNode implements IWaveformDb {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean load(File inp) throws Exception {
|
||||
public boolean load(File inp){
|
||||
for(IWaveformDbLoader loader:loaders){
|
||||
if(loader.load(this, inp)){
|
||||
for(IWaveform w:loader.getAllWaves()){
|
||||
waveforms.put(w.getFullName(),w);
|
||||
try {
|
||||
if(loader.load(this, inp)){
|
||||
for(IWaveform w:loader.getAllWaves()){
|
||||
waveforms.put(w.getFullName(),w);
|
||||
}
|
||||
if(loader.getMaxTime()>maxTime){
|
||||
maxTime=loader.getMaxTime();
|
||||
}
|
||||
if(name==null) name=getFileBasename(inp.getName());
|
||||
buildHierarchyNodes() ;
|
||||
relationTypes.addAll(loader.getAllRelationTypes());
|
||||
pcs.firePropertyChange("WAVEFORMS", null, waveforms);
|
||||
pcs.firePropertyChange("CHILDS", null, childNodes);
|
||||
loaded = true;
|
||||
return true;
|
||||
}
|
||||
if(loader.getMaxTime()>maxTime){
|
||||
maxTime=loader.getMaxTime();
|
||||
}
|
||||
if(name==null) name=getFileBasename(inp.getName());
|
||||
buildHierarchyNodes() ;
|
||||
relationTypes.addAll(loader.getAllRelationTypes());
|
||||
pcs.firePropertyChange("WAVEFORMS", null, waveforms);
|
||||
pcs.firePropertyChange("CHILDS", null, childNodes);
|
||||
loaded = true;
|
||||
return true;
|
||||
} catch (Exception e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
Reference in New Issue
Block a user