57 lines
1.8 KiB
Java
57 lines
1.8 KiB
Java
package com.esotericsoftware.kryo.util;
|
|
|
|
import com.esotericsoftware.kryo.Kryo;
|
|
import com.esotericsoftware.kryo.ReferenceResolver;
|
|
import java.util.ArrayList;
|
|
public class MapReferenceResolver implements ReferenceResolver {
|
|
public Kryo kryo;
|
|
public final ArrayList readObjects = new ArrayList();
|
|
public final IdentityObjectIntMap writtenObjects = new IdentityObjectIntMap();
|
|
|
|
@Override // com.esotericsoftware.kryo.ReferenceResolver
|
|
public int addWrittenObject(Object obj) {
|
|
IdentityObjectIntMap identityObjectIntMap = this.writtenObjects;
|
|
int i = identityObjectIntMap.size;
|
|
identityObjectIntMap.put(obj, i);
|
|
return i;
|
|
}
|
|
|
|
@Override // com.esotericsoftware.kryo.ReferenceResolver
|
|
public Object getReadObject(Class cls, int i) {
|
|
return this.readObjects.get(i);
|
|
}
|
|
|
|
@Override // com.esotericsoftware.kryo.ReferenceResolver
|
|
public int getWrittenId(Object obj) {
|
|
return this.writtenObjects.get(obj, -1);
|
|
}
|
|
|
|
@Override // com.esotericsoftware.kryo.ReferenceResolver
|
|
public int nextReadId(Class cls) {
|
|
int size = this.readObjects.size();
|
|
this.readObjects.add(null);
|
|
return size;
|
|
}
|
|
|
|
@Override // com.esotericsoftware.kryo.ReferenceResolver
|
|
public void reset() {
|
|
this.readObjects.clear();
|
|
this.writtenObjects.clear(2048);
|
|
}
|
|
|
|
@Override // com.esotericsoftware.kryo.ReferenceResolver
|
|
public void setKryo(Kryo kryo) {
|
|
this.kryo = kryo;
|
|
}
|
|
|
|
@Override // com.esotericsoftware.kryo.ReferenceResolver
|
|
public void setReadObject(int i, Object obj) {
|
|
this.readObjects.set(i, obj);
|
|
}
|
|
|
|
@Override // com.esotericsoftware.kryo.ReferenceResolver
|
|
public boolean useReferences(Class cls) {
|
|
return !Util.isWrapperClass(cls);
|
|
}
|
|
}
|