Package org.jetbrains.plugins.clojure.psi.stubs.elements

Source Code of org.jetbrains.plugins.clojure.psi.stubs.elements.ClDefElementType

package org.jetbrains.plugins.clojure.psi.stubs.elements;

import org.jetbrains.plugins.clojure.psi.ClStubElementType;
import org.jetbrains.plugins.clojure.psi.impl.defs.ClDefImpl;
import org.jetbrains.plugins.clojure.psi.api.defs.ClDef;
import org.jetbrains.plugins.clojure.psi.stubs.api.ClDefStub;
import org.jetbrains.plugins.clojure.psi.stubs.index.ClDefNameIndex;
import org.jetbrains.plugins.clojure.parser.ClojureElementTypes;
import com.intellij.psi.PsiElement;
import com.intellij.psi.stubs.StubElement;
import com.intellij.psi.stubs.StubOutputStream;
import com.intellij.psi.stubs.StubInputStream;
import com.intellij.psi.stubs.IndexSink;
import com.intellij.lang.ASTNode;
import com.intellij.util.io.StringRef;

import java.io.IOException;

/**
* @author ilyas
*/
public class ClDefElementType extends ClStubElementType<ClDefStub, ClDef> {

  public ClDefElementType() {
    super("def-element");
  }

  public void serialize(ClDefStub stub, StubOutputStream dataStream) throws IOException {
    dataStream.writeName(stub.getName());
    dataStream.writeInt(stub.getTextOffset());
  }

  public ClDefStub deserialize(StubInputStream dataStream, StubElement parentStub) throws IOException {
    StringRef ref = dataStream.readName();
    int textOffset = dataStream.readInt();
    return new ClDefStub(parentStub, ref, this, textOffset);
  }

  public PsiElement createElement(ASTNode node) {
    return new ClDefImpl(node);
  }

  public ClDef createPsi(ClDefStub stub) {
    return new ClDefImpl(stub, ClojureElementTypes.DEF);
  }

  public ClDefStub createStub(ClDef psi, StubElement parentStub) {
    return new ClDefStub(parentStub, StringRef.fromString(psi.getName()), ClojureElementTypes.DEF, psi.getTextOffset());
  }

  @Override
  public void indexStub(ClDefStub stub, IndexSink sink) {
    final String name = stub.getName();
    if (name != null) {
      sink.occurrence(ClDefNameIndex.KEY, name);
    }
  }
}
TOP

Related Classes of org.jetbrains.plugins.clojure.psi.stubs.elements.ClDefElementType

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.