# Debug mode for StateReducer
printout_state_transition=true
-#activate_state_reduction=false
+activate_state_reduction=true
file_output=moreStatistics
# Timeout in minutes (default is 0 which means no timeout)
// over the serialized objects to reset their sids. This works by resetting
// the sid to 0 upon backtrack, and counting either upwards from 1 or downwards
// from -1, but store the absolute value in the serialization stream
- boolean positiveSid;
-
- int sidCount;
+ int initsidCount=0;
+ int sidCount=1;
@Override
protected void initReferenceQueue() {
super.initReferenceQueue();
-
- if (positiveSid){
- positiveSid = false;
- sidCount = -1;
- } else {
- positiveSid = true;
- sidCount = 1;
- }
+
+ initsidCount = sidCount - 1;
}
// might be overriden in subclasses to conditionally queue objects
ClassInfo ci = ei.getClassInfo();
if (SmartThingsConfig.instance.ignoreClass(ci)) {
- ei.setSid(0);
+ ei.setSid(initsidCount);
buf.add(0);
return;
}
-
int sid = ei.getSid();
-
- if (positiveSid){ // count sid upwards from 1
- if (sid <= 0){ // not seen before in this serialization run
+
+ if (sid <= initsidCount){ // count sid upwards from 1
sid = sidCount++;
ei.setSid(sid);
queueReference(ei);
- }
- } else { // count sid downwards from -1
- if (sid >= 0){ // not seen before in this serialization run
- sid = sidCount--;
- ei.setSid(sid);
- queueReference(ei);
- }
- sid = -sid;
}
// note that we always add the absolute sid value
- buf.add(sid);
+ buf.add(sid - initsidCount);
}
}
@Override
protected int getSerializedReferenceValue (ElementInfo ei){
- return Math.abs(ei.getSid());
+ return ei.getSid()-initsidCount;
}
}