165eecc51b264f73d6470a529a139317de921f5ecBen Gruver/* 265eecc51b264f73d6470a529a139317de921f5ecBen Gruver * Copyright 2014, Google Inc. 365eecc51b264f73d6470a529a139317de921f5ecBen Gruver * All rights reserved. 465eecc51b264f73d6470a529a139317de921f5ecBen Gruver * 565eecc51b264f73d6470a529a139317de921f5ecBen Gruver * Redistribution and use in source and binary forms, with or without 665eecc51b264f73d6470a529a139317de921f5ecBen Gruver * modification, are permitted provided that the following conditions are 765eecc51b264f73d6470a529a139317de921f5ecBen Gruver * met: 865eecc51b264f73d6470a529a139317de921f5ecBen Gruver * 965eecc51b264f73d6470a529a139317de921f5ecBen Gruver * * Redistributions of source code must retain the above copyright 1065eecc51b264f73d6470a529a139317de921f5ecBen Gruver * notice, this list of conditions and the following disclaimer. 1165eecc51b264f73d6470a529a139317de921f5ecBen Gruver * * Redistributions in binary form must reproduce the above 1265eecc51b264f73d6470a529a139317de921f5ecBen Gruver * copyright notice, this list of conditions and the following disclaimer 1365eecc51b264f73d6470a529a139317de921f5ecBen Gruver * in the documentation and/or other materials provided with the 1465eecc51b264f73d6470a529a139317de921f5ecBen Gruver * distribution. 1565eecc51b264f73d6470a529a139317de921f5ecBen Gruver * * Neither the name of Google Inc. nor the names of its 1665eecc51b264f73d6470a529a139317de921f5ecBen Gruver * contributors may be used to endorse or promote products derived from 1765eecc51b264f73d6470a529a139317de921f5ecBen Gruver * this software without specific prior written permission. 1865eecc51b264f73d6470a529a139317de921f5ecBen Gruver * 1965eecc51b264f73d6470a529a139317de921f5ecBen Gruver * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 2065eecc51b264f73d6470a529a139317de921f5ecBen Gruver * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 2165eecc51b264f73d6470a529a139317de921f5ecBen Gruver * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 2265eecc51b264f73d6470a529a139317de921f5ecBen Gruver * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2365eecc51b264f73d6470a529a139317de921f5ecBen Gruver * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2465eecc51b264f73d6470a529a139317de921f5ecBen Gruver * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2565eecc51b264f73d6470a529a139317de921f5ecBen Gruver * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2665eecc51b264f73d6470a529a139317de921f5ecBen Gruver * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2765eecc51b264f73d6470a529a139317de921f5ecBen Gruver * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2865eecc51b264f73d6470a529a139317de921f5ecBen Gruver * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2965eecc51b264f73d6470a529a139317de921f5ecBen Gruver * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3065eecc51b264f73d6470a529a139317de921f5ecBen Gruver */ 3165eecc51b264f73d6470a529a139317de921f5ecBen Gruver 3265eecc51b264f73d6470a529a139317de921f5ecBen Gruverpackage org.jf.smalidea.psi.stub.element; 3365eecc51b264f73d6470a529a139317de921f5ecBen Gruver 3465eecc51b264f73d6470a529a139317de921f5ecBen Gruverimport com.intellij.lang.ASTNode; 3565eecc51b264f73d6470a529a139317de921f5ecBen Gruverimport com.intellij.psi.stubs.IndexSink; 3665eecc51b264f73d6470a529a139317de921f5ecBen Gruverimport com.intellij.psi.stubs.StubElement; 3765eecc51b264f73d6470a529a139317de921f5ecBen Gruverimport com.intellij.psi.stubs.StubInputStream; 3865eecc51b264f73d6470a529a139317de921f5ecBen Gruverimport com.intellij.psi.stubs.StubOutputStream; 3965eecc51b264f73d6470a529a139317de921f5ecBen Gruverimport org.jetbrains.annotations.NotNull; 4065eecc51b264f73d6470a529a139317de921f5ecBen Gruverimport org.jf.smalidea.psi.impl.SmaliAnnotation; 4165eecc51b264f73d6470a529a139317de921f5ecBen Gruverimport org.jf.smalidea.psi.stub.SmaliAnnotationStub; 4265eecc51b264f73d6470a529a139317de921f5ecBen Gruver 4365eecc51b264f73d6470a529a139317de921f5ecBen Gruverimport java.io.IOException; 4465eecc51b264f73d6470a529a139317de921f5ecBen Gruver 4565eecc51b264f73d6470a529a139317de921f5ecBen Gruverpublic class SmaliAnnotationElementType extends SmaliStubElementType<SmaliAnnotationStub, SmaliAnnotation> { 4665eecc51b264f73d6470a529a139317de921f5ecBen Gruver public static final SmaliAnnotationElementType INSTANCE = new SmaliAnnotationElementType(); 4765eecc51b264f73d6470a529a139317de921f5ecBen Gruver 4865eecc51b264f73d6470a529a139317de921f5ecBen Gruver private SmaliAnnotationElementType() { 4965eecc51b264f73d6470a529a139317de921f5ecBen Gruver super("ANNOTATION"); 5065eecc51b264f73d6470a529a139317de921f5ecBen Gruver } 5165eecc51b264f73d6470a529a139317de921f5ecBen Gruver 5265eecc51b264f73d6470a529a139317de921f5ecBen Gruver @NotNull @Override public String getExternalId() { 5365eecc51b264f73d6470a529a139317de921f5ecBen Gruver return "smali.annotation"; 5465eecc51b264f73d6470a529a139317de921f5ecBen Gruver } 5565eecc51b264f73d6470a529a139317de921f5ecBen Gruver 5665eecc51b264f73d6470a529a139317de921f5ecBen Gruver @Override public SmaliAnnotation createPsi(@NotNull SmaliAnnotationStub stub) { 5765eecc51b264f73d6470a529a139317de921f5ecBen Gruver return new SmaliAnnotation(stub); 5865eecc51b264f73d6470a529a139317de921f5ecBen Gruver } 5965eecc51b264f73d6470a529a139317de921f5ecBen Gruver 6065eecc51b264f73d6470a529a139317de921f5ecBen Gruver @Override public SmaliAnnotation createPsi(@NotNull ASTNode node) { 6165eecc51b264f73d6470a529a139317de921f5ecBen Gruver return new SmaliAnnotation(node); 6265eecc51b264f73d6470a529a139317de921f5ecBen Gruver } 6365eecc51b264f73d6470a529a139317de921f5ecBen Gruver 6465eecc51b264f73d6470a529a139317de921f5ecBen Gruver @Override public SmaliAnnotationStub createStub(@NotNull SmaliAnnotation psi, StubElement parentStub) { 6582f031210ea1913abdb2a26b1f461826ee9980faBen Gruver return new SmaliAnnotationStub(parentStub, psi.getSmaliName()); 6665eecc51b264f73d6470a529a139317de921f5ecBen Gruver } 6765eecc51b264f73d6470a529a139317de921f5ecBen Gruver 6865eecc51b264f73d6470a529a139317de921f5ecBen Gruver @Override 6965eecc51b264f73d6470a529a139317de921f5ecBen Gruver public void serialize(@NotNull SmaliAnnotationStub stub, @NotNull StubOutputStream dataStream) throws IOException { 7082f031210ea1913abdb2a26b1f461826ee9980faBen Gruver dataStream.writeName(stub.getAnnotationSmaliTypeName()); 7165eecc51b264f73d6470a529a139317de921f5ecBen Gruver } 7265eecc51b264f73d6470a529a139317de921f5ecBen Gruver 7365eecc51b264f73d6470a529a139317de921f5ecBen Gruver @NotNull @Override 7465eecc51b264f73d6470a529a139317de921f5ecBen Gruver public SmaliAnnotationStub deserialize(@NotNull StubInputStream dataStream, StubElement parentStub) throws IOException { 751325537f8a71116a2002494bb815d364575ee2c8Ben Gruver return new SmaliAnnotationStub(parentStub, deserializeNullableString(dataStream)); 7665eecc51b264f73d6470a529a139317de921f5ecBen Gruver } 7765eecc51b264f73d6470a529a139317de921f5ecBen Gruver 7865eecc51b264f73d6470a529a139317de921f5ecBen Gruver @Override public void indexStub(@NotNull SmaliAnnotationStub stub, @NotNull IndexSink sink) { 7965eecc51b264f73d6470a529a139317de921f5ecBen Gruver } 8065eecc51b264f73d6470a529a139317de921f5ecBen Gruver} 81