/**********************************************************\
| |
| hprose |
| |
| Official WebSite: http://www.hprose.com/ |
| http://www.hprose.org/ |
| |
\**********************************************************/
/**********************************************************\
* *
* WriterRefer.java *
* *
* writer refer class for Java. *
* *
* LastModified: Aug 7, 2015 *
* Author: Ma Bingyao <andot@hprose.com> *
* *
\**********************************************************/
package net.hasor.libs.com.hprose.io.serialize;
import java.io.IOException;
import java.io.OutputStream;
import java.util.IdentityHashMap;
import static net.hasor.libs.com.hprose.io.HproseTags.TagRef;
import static net.hasor.libs.com.hprose.io.HproseTags.TagSemicolon;
final class WriterRefer {
private final IdentityHashMap<Object, Integer> ref = new IdentityHashMap<Object, Integer>();
private int lastref = 0;
public final void addCount(int count) {
lastref += count;
}
public final void set(Object obj) {
ref.put(obj, lastref++);
}
public final boolean write(OutputStream stream, Object obj) throws IOException {
Integer r = ref.get(obj);
if (r != null) {
stream.write(TagRef);
ValueWriter.writeInt(stream, r);
stream.write(TagSemicolon);
return true;
}
return false;
}
public final void reset() {
ref.clear();
lastref = 0;
}
}