17ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver/* 27ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver * Copyright 2012, Google Inc. 37ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver * All rights reserved. 47ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver * 57ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver * Redistribution and use in source and binary forms, with or without 67ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver * modification, are permitted provided that the following conditions are 77ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver * met: 87ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver * 97ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver * * Redistributions of source code must retain the above copyright 107ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver * notice, this list of conditions and the following disclaimer. 117ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver * * Redistributions in binary form must reproduce the above 127ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver * copyright notice, this list of conditions and the following disclaimer 137ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver * in the documentation and/or other materials provided with the 147ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver * distribution. 157ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver * * Neither the name of Google Inc. nor the names of its 167ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver * contributors may be used to endorse or promote products derived from 177ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver * this software without specific prior written permission. 187ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver * 197ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 207ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 217ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 227ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 237ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 247ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 257ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 267ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 277ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 287ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 297ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 307ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver */ 317ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver 327ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruverpackage org.jf.dexlib2; 337ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver 347ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruverimport org.jf.util.ExceptionWithContext; 357ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver 3685b31462241daf1d5d5e7b5e94ca926e46dff971Ben Gruverpublic final class AnnotationVisibility { 377ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver public static final int BUILD = 0; 387ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver public static final int RUNTIME = 1; 397ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver public static final int SYSTEM = 2; 407ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver 417ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver private static String[] NAMES = new String[] {"build", "runtime", "system"}; 427ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver 437ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver public static String getVisibility(int visibility) { 447ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver if (visibility < 0 || visibility >= NAMES.length) { 457ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver throw new ExceptionWithContext("Invalid annotation visibility %d", visibility); 467ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver } 477ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver return NAMES[visibility]; 487ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver } 4985b31462241daf1d5d5e7b5e94ca926e46dff971Ben Gruver 50f24f26738dddb0a640b91a1f055b475b5a3ae116Ben Gruver public static int getVisibility(String visibility) { 51f24f26738dddb0a640b91a1f055b475b5a3ae116Ben Gruver visibility = visibility.toLowerCase(); 52f24f26738dddb0a640b91a1f055b475b5a3ae116Ben Gruver if (visibility.equals("build")) { 53f24f26738dddb0a640b91a1f055b475b5a3ae116Ben Gruver return BUILD; 54f24f26738dddb0a640b91a1f055b475b5a3ae116Ben Gruver } 55f24f26738dddb0a640b91a1f055b475b5a3ae116Ben Gruver if (visibility.equals("runtime")) { 56f24f26738dddb0a640b91a1f055b475b5a3ae116Ben Gruver return RUNTIME; 57f24f26738dddb0a640b91a1f055b475b5a3ae116Ben Gruver } 58f24f26738dddb0a640b91a1f055b475b5a3ae116Ben Gruver if (visibility.equals("system")) { 59f24f26738dddb0a640b91a1f055b475b5a3ae116Ben Gruver return SYSTEM; 60f24f26738dddb0a640b91a1f055b475b5a3ae116Ben Gruver } 61f24f26738dddb0a640b91a1f055b475b5a3ae116Ben Gruver throw new ExceptionWithContext("Invalid annotation visibility: %s", visibility); 62f24f26738dddb0a640b91a1f055b475b5a3ae116Ben Gruver } 63f24f26738dddb0a640b91a1f055b475b5a3ae116Ben Gruver 6485b31462241daf1d5d5e7b5e94ca926e46dff971Ben Gruver private AnnotationVisibility() {} 657ccb5fcfec99e79a8a65c774900f680690406c01Ben Gruver} 66