/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.plugin.ij.lang.psi.stubs;
import com.intellij.psi.stubs.StubInputStream;
import com.intellij.psi.stubs.StubOutputStream;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class GosuStubUtils {
@NotNull
public static List<Set<String>> deserializeCollectionsArray(@NotNull StubInputStream dataStream) throws IOException {
//named parameters
final byte namedParametersSetNumber = dataStream.readByte();
final List<Set<String>> collArray = new ArrayList<>();
for (int i = 0; i < namedParametersSetNumber; i++) {
final byte curNamedParameterSetSize = dataStream.readByte();
final String[] namedParameterSetArray = new String[curNamedParameterSetSize];
for (int j = 0; j < curNamedParameterSetSize; j++) {
namedParameterSetArray[j] = dataStream.readUTF();
}
Set<String> curSet = new HashSet<>();
ContainerUtil.addAll(curSet, namedParameterSetArray);
collArray.add(curSet);
}
return collArray;
}
public static void serializeCollectionsArray(@NotNull StubOutputStream dataStream, @NotNull Set<String>[] collArray) throws IOException {
dataStream.writeByte(collArray.length);
for (Set<String> namedParameterSet : collArray) {
dataStream.writeByte(namedParameterSet.size());
for (String namepParameter : namedParameterSet) {
dataStream.writeUTF(namepParameter);
}
}
}
public static void writeStringArray(@NotNull StubOutputStream dataStream, @NotNull String[] array) throws IOException {
dataStream.writeByte(array.length);
for (String s : array) {
dataStream.writeName(s);
}
}
@NotNull
public static String[] readStringArray(@NotNull StubInputStream dataStream) throws IOException {
final byte b = dataStream.readByte();
final String[] annNames = new String[b];
for (int i = 0; i < b; i++) {
annNames[i] = dataStream.readName().toString();
}
return annNames;
}
}