package glslplugin.lang.elements.preprocessor; import com.intellij.lang.ASTNode; import com.intellij.psi.PsiElement; import glslplugin.lang.elements.GLSLTokenTypes; import org.jetbrains.annotations.NotNull; /** * @author Wyozi */ public class GLSLVersionDirective extends GLSLPreprocessorDirective { public GLSLVersionDirective(@NotNull ASTNode astNode) { super(astNode); } public PsiElement getVersionLiteral() { PsiElement child = getFirstChild(); while (child != null) { // we can't iterate over getChildren(), as that ignores leaf elements if (child.getNode().getElementType() == GLSLTokenTypes.INTEGER_CONSTANT) return child; child = child.getNextSibling(); } return null; } /** * @return the version literal as number or -1 if not found */ public int getVersionLiteralNumber() { PsiElement versionLiteral = getVersionLiteral(); if (versionLiteral == null) return -1; return Integer.parseInt(versionLiteral.getText()); } @Override public String toString() { final int versionLiteralNumber = getVersionLiteralNumber(); return "#Version Directive " + (versionLiteralNumber == -1 ? "?" : versionLiteralNumber); } }