// Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. 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; } }