Package com.intellij.extapi.psi

Source Code of com.intellij.extapi.psi.MetadataPsiFileBase

package com.intellij.extapi.psi;

import com.intellij.lang.Language;
import com.intellij.lang.ParserDefinition;
import com.intellij.psi.FileViewProvider;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiElementVisitor;
import com.intellij.psi.tree.IFileElementType;
import com.intellij.psi.impl.source.PsiFileImpl;
import com.intellij.lexer.Lexer;
import org.jetbrains.annotations.NotNull;

public abstract class MetadataPsiFileBase extends PsiFileImpl {

  @NotNull private final Language myLanguage;
  @NotNull private final ParserDefinition myParserDefinition;
  private PsiFile mySourceFile;

  public MetadataPsiFileBase(FileViewProvider provider, @NotNull Language language) {
    super(provider);
    myLanguage = language;
    final ParserDefinition parserDefinition = language.getParserDefinition();
    if (parserDefinition == null) {
      throw new RuntimeException("PsiFileBase: language.getParserDefinition() returned null.");
    }
    myParserDefinition = parserDefinition;
    final IFileElementType nodeType = parserDefinition.getFileNodeType();
    init(nodeType, nodeType);
  }

  public Lexer createLexer() {
    return myParserDefinition.createLexer(getProject());
  }

  public void accept(@NotNull PsiElementVisitor visitor) {
    visitor.visitFile(this);
  }

  @NotNull
  public final Language getLanguage() {
    return myLanguage;
  }

  public final PsiFile getSourceFile() {
    return mySourceFile;
  }

  public final void setSourceFile(final PsiFile sourceFile) {
    mySourceFile = sourceFile;
  }
}
TOP

Related Classes of com.intellij.extapi.psi.MetadataPsiFileBase

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.