package com.innovatian.idea.powershell.lang.parser;
import com.innovatian.idea.powershell.lang.psi.PsFile;
import com.intellij.lang.Language;
import com.intellij.psi.PsiFile;
import com.intellij.psi.StubBuilder;
import com.intellij.psi.stubs.*;
import com.intellij.psi.tree.IStubFileElementType;
import com.intellij.util.io.StringRef;
import java.io.IOException;
public class PsStubFileElementType extends IStubFileElementType<PsFileStub> {
public PsStubFileElementType(Language language) {
super(language);
}
public StubBuilder getBuilder() {
return new DefaultStubBuilder() {
protected StubElement createStubForFile(final PsiFile file) {
if (file instanceof PsFile) {
return new PsFileStub((PsFile) file);
}
return super.createStubForFile(file);
}
};
}
@Override
public int getStubVersion() {
return super.getStubVersion() + 9;
}
public String getExternalId() {
return "powershell.FILE";
}
@Override
public void indexStub(PsiFileStub stub, IndexSink sink) {
super.indexStub(stub, sink);
}
@Override
public void serialize(final PsFileStub stub, final StubOutputStream dataStream) throws IOException {
dataStream.writeName(stub.getName().toString());
}
@Override
public PsFileStub deserialize(final StubInputStream dataStream, final StubElement parentStub) throws IOException {
StringRef name = dataStream.readName();
return new PsFileStub(name);
}
public void indexStub(PsFileStub stub, IndexSink sink) {
String name = stub.getName().toString();
if (name != null) {
sink.occurrence(PsFullScriptNameIndex.KEY, name.hashCode());
}
}
}