package com.jetbrains.lang.dart.ide.index;
import com.intellij.util.io.DataExternalizer;
import com.intellij.util.io.DataInputOutputUtil;
import com.intellij.util.io.IOUtil;
import com.jetbrains.lang.dart.DartComponentType;
import org.jetbrains.annotations.NotNull;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
public class DartComponentInfoExternalizer implements DataExternalizer<DartComponentInfo> {
@Override
public void save(@NotNull final DataOutput out, @NotNull final DartComponentInfo componentInfo) throws IOException {
final DartComponentType dartComponentType = componentInfo.getComponentType();
final int key = dartComponentType == null ? -1 : dartComponentType.getKey();
DataInputOutputUtil.writeINT(out, key);
final String libraryName = componentInfo.getLibraryName();
out.writeBoolean(libraryName != null);
if (libraryName != null) {
IOUtil.writeUTF(out, libraryName);
}
}
@Override
public DartComponentInfo read(@NotNull DataInput in) throws IOException {
final int componentTypeKey = DataInputOutputUtil.readINT(in);
final boolean hasLibraryName = in.readBoolean();
final String libraryName = hasLibraryName ? IOUtil.readUTF(in) : null;
return new DartComponentInfo(DartComponentType.valueOf(componentTypeKey), libraryName);
}
}