下面列出了com.intellij.psi.tree.IElementType#find ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
@Nullable
public PsiElement restoreElement(@Nonnull SmartPointerManagerImpl manager) {
long typeAndId = myStubElementTypeAndId;
int stubId = (int)typeAndId;
if (stubId != -1) {
PsiFile file = restoreFile(manager);
if (!(file instanceof PsiFileWithStubSupport)) return null;
short index = (short)(typeAndId >> 32);
IStubElementType stubElementType = (IStubElementType)IElementType.find(index);
return PsiAnchor.restoreFromStubIndex((PsiFileWithStubSupport)file, stubId, stubElementType, false);
}
return super.restoreElement(manager);
}
@Nonnull
@Override
public IElementType typeOf(@Nonnull PsiElement node) {
IElementType type = PsiUtilCore.getElementType(node);
return type != null ? type : IElementType.find((short)0);
}
IStubElementType<?, ?> getStubType(int id) {
return (IStubElementType<?, ?>)IElementType.find(getStubTypeIndex(id));
}
@Override
public HighlighterIterator createIterator(int startOffset) {
return new HighlighterIterator(){
private int index = 0;
@Override
public TextAttributes getTextAttributes() {
return myAttributes;
}
@Override
public int getStart() {
return 0;
}
@Override
public int getEnd() {
return myTextLength;
}
@Override
public void advance() {
index++;
}
@Override
public void retreat(){
index--;
}
@Override
public boolean atEnd() {
return index != 0;
}
@Override
public Document getDocument() {
return myEditor.getDocument();
}
@Override
public IElementType getTokenType(){
return IElementType.find(IElementType.FIRST_TOKEN_INDEX);
}
};
}
@Override
public IElementType unpackTokenFromData(int data) {
return IElementType.find((short)(data & 0xffff));
}
@Override
public IElementType unpackTokenFromData(int data) {
return IElementType.find((short)Math.abs(data));
}
@Override
public boolean isForPsiFile() {
if (myElementTypeId < 0) return false;
IElementType elementType = IElementType.find(myElementTypeId);
return elementType instanceof IFileElementType;
}