/** * works only if change tracking is enabled */ public FSTStruct startChangeTracking() { tracker = new FSTStructChange(); return this; }
public void addChange(long offset, int len, String field) { addChange((long)offset,(long)len,field); }
/** * works only if change tracking is enabled */ public FSTStructChange finishChangeTracking() { tracker.snapshotChanges((int) getOffset(), getBase()); FSTStructChange res = tracker; tracker = null; return res; }
/** * collects all changes and rebases. * @param originBase * @param origin */ public void snapshotChanges(int originBase, Bytez origin) { int sumLen = 0; for (int i = 0; i < curIndex; i++) { sumLen += changeLength[i]; } snapshot = new byte[sumLen]; int targetIdx = 0; for (int i = 0; i < curIndex; i++) { int changeOffset = changeOffsets[i]; int len = changeLength[i]; for ( int ii = 0; ii < len; ii++) { snapshot[targetIdx++] = origin.get(changeOffset+ii); } } rebase(originBase); }
/** * works only if change tracking is enabled */ public FSTStructChange finishChangeTracking() { tracker.snapshotChanges((int) getOffset(), getBase()); FSTStructChange res = tracker; tracker = null; return res; }
/** * collects all changes and rebases. * @param originBase * @param origin */ public void snapshotChanges(int originBase, Bytez origin) { int sumLen = 0; for (int i = 0; i < curIndex; i++) { sumLen += changeLength[i]; } snapshot = new byte[sumLen]; int targetIdx = 0; for (int i = 0; i < curIndex; i++) { int changeOffset = changeOffsets[i]; int len = changeLength[i]; for ( int ii = 0; ii < len; ii++) { snapshot[targetIdx++] = origin.get(changeOffset+ii); } } rebase(originBase); }
public void addChange(int offset, int len, String field) { addChange((long)offset,(long)len,field); }
/** * works only if change tracking is enabled */ public FSTStruct startChangeTracking() { tracker = new FSTStructChange(); return this; }
public void addChange(long offset, int len, String field) { addChange((long)offset,(long)len,field); }
public void addChange(int offset, int len, String field) { addChange((long)offset,(long)len,field); }
public void addChange(long offset, long len, String field) { if ( _parent != null ) { _parent.addChange(offset,len,_parentField); return; } if ( curIndex > 0 && changeOffsets[curIndex-1]+changeLength[curIndex-1] == offset ) { changeLength[curIndex-1]+=len; return; } if ( curIndex >= changeOffsets.length ) { int newOff[] = new int[changeOffsets.length*2]; System.arraycopy(changeOffsets,0,newOff,0,changeOffsets.length); int newLen[] = new int[changeOffsets.length*2]; System.arraycopy(changeLength,0,newLen,0,changeLength.length); String newCF[] = new String[changeOffsets.length*2]; System.arraycopy(changedFields,0,newCF,0,changedFields.length); changeOffsets = newOff; changeLength = newLen; changedFields = newCF; } changeOffsets[curIndex] = (int) (offset); changeLength[curIndex] = (int) len; changedFields[curIndex] = field; curIndex++; }
public void addChange(long offset, long len, String field) { if ( _parent != null ) { _parent.addChange(offset,len,_parentField); return; } if ( curIndex > 0 && changeOffsets[curIndex-1]+changeLength[curIndex-1] == offset ) { changeLength[curIndex-1]+=len; return; } if ( curIndex >= changeOffsets.length ) { int newOff[] = new int[changeOffsets.length*2]; System.arraycopy(changeOffsets,0,newOff,0,changeOffsets.length); int newLen[] = new int[changeOffsets.length*2]; System.arraycopy(changeLength,0,newLen,0,changeLength.length); String newCF[] = new String[changeOffsets.length*2]; System.arraycopy(changedFields,0,newCF,0,changedFields.length); changeOffsets = newOff; changeLength = newLen; changedFields = newCF; } changeOffsets[curIndex] = (int) (offset); changeLength[curIndex] = (int) len; changedFields[curIndex] = field; curIndex++; }