/* * Copyright 2000-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.jetbrains.java.decompiler.struct.consts; import org.jetbrains.java.decompiler.code.CodeConstants; import java.io.DataOutputStream; import java.io.IOException; /* cp_info { u1 tag; u1 info[]; } */ public class PooledConstant implements CodeConstants, VariableTypeEnum { // ***************************************************************************** // public fields // ***************************************************************************** public int type; public boolean own = false; public int returnType; // ***************************************************************************** // private fields // ***************************************************************************** private Object[] values; // ***************************************************************************** // constructors // ***************************************************************************** public PooledConstant() { } public PooledConstant(int type, Object[] values) { this.type = type; this.values = values; this.returnType = poolTypeToIntern(type); } public PooledConstant(int type, boolean own, Object[] values) { this.type = type; this.own = own; this.values = values; this.returnType = poolTypeToIntern(type); } // ***************************************************************************** // public methods // ***************************************************************************** public void resolveConstant(ConstantPool pool) { // to be overwritten } public void writeToStream(DataOutputStream out) throws IOException { // to be overwritten } public int poolTypeToIntern(int type) { switch (type) { case CONSTANT_Integer: return INT; case CONSTANT_Float: return FLOAT; case CONSTANT_Long: return LONG; case CONSTANT_Double: return DOUBLE; case CONSTANT_String: case CONSTANT_Class: // 1.5 -> ldc class return REFERENCE; default: throw new RuntimeException("Huh?? What are you trying to load?"); } } public Object getValue(int index) { return values[index]; } // ***************************************************************************** // getter and setter methods // ***************************************************************************** public Object[] getValues() { return values; } public void setValues(Object[] values) { this.values = values; } }