15f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes/* 25f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 35f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * contributor license agreements. See the NOTICE file distributed with 45f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * this work for additional information regarding copyright ownership. 55f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 65f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * (the "License"); you may not use this file except in compliance with 75f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * the License. You may obtain a copy of the License at 85f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 95f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Unless required by applicable law or agreed to in writing, software 125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * See the License for the specific language governing permissions and 165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * limitations under the License. 175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes/** 205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @author Alexei S. Vaskin 215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes/** 245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Created on 22.04.2005 255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughespackage org.apache.harmony.jpda.tests.framework.jdwp; 285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughesimport java.util.ArrayList; 305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughesimport java.util.Iterator; 315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes/** 335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * This class provides description of frame. 345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughespublic class Frame { 375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes protected long threadID; 395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes protected Location loc; 415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes protected long id; 435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 445f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes protected ArrayList vars; 455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Default constructor. 485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public Frame() { 505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes threadID = -1; 515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes id = -1L; 525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes loc = new Location(); 535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes vars = null; 545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Constructor initializing all members of the Frame instance. 585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param threadID 605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * thread id 615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param id 625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * frame id 635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param location 645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * frame location 655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param vars 665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * list of variables 675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes Frame(long threadID, long id, Location location, ArrayList vars) { 695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.threadID = threadID; 705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.id = id; 715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.loc = location; 725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.vars = vars; 735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets thread id. 775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return long 795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public long getThreadID() { 815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return threadID; 825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets new thread id. 865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param threadID 885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * new thread id 895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setThreadID(long threadID) { 915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.threadID = threadID; 925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets frame id. 965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return long 985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public long getID() { 1005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return id; 1015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 1045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets new frame id. 1055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 1065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param id 1075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * new frame id 1085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 1095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setID(long id) { 1105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.id = id; 1115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 1145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets frame location. 1155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 1165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return Location 1175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 1185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public Location getLocation() { 1195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return loc; 1205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 1235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets new frame location. 1245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 1255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param location 1265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * new frame location 1275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 1285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setLocation(Location location) { 1295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.loc = location; 1305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 1335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets frame variables. 1345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 1355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return list of frame variables 1365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 1375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public ArrayList getVars() { 1385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return vars; 1395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 1425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets new frame variables. 1435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 1445f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param vars 1455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * list of new frame variables 1465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 1475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setVars(ArrayList vars) { 1485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.vars = vars; 1495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 1525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Converts Frame object to String. 1535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 1545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @see java.lang.Object#toString() 1555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return String 1565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 1575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public String toString() { 1585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes String string = "Frame: id=" + id + ", threadID=" + threadID 1595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + ", location=" + loc.toString() + "\n"; 1605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes string += "--- Variables ---"; 1615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes Iterator it = vars.iterator(); 1625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes while (it.hasNext()) { 1635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes string += ((Variable) it.next()).toString(); 1645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return string; 1665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 1695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Compares two Frame objects. 1705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 1715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @see java.lang.Object#equals(java.lang.Object) 1725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return boolean 1735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 1745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public boolean equals(Object obj) { 1755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if (!(obj instanceof Frame)) { 1765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return false; 1775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if (this.getClass() != obj.getClass()) { 1805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return false; 1815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes Frame frame = (Frame) obj; 1845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if (this.threadID != frame.threadID || this.id != frame.id 1855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes || !(this.loc.equals(frame.loc))) { 1865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return false; 1875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if (vars.size() != frame.vars.size()) { 1905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return false; 1915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if (!vars.equals(frame.vars)) { 1945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return false; 1955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return true; 1985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 2015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * This describing frame variable. 2025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 2035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 2045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public final class Variable { 2055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes private long codeIndex; 2065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes private String name; 2085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes private String signature; 2105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes private int length; 2125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes private int slot; 2145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes private byte tag; 2165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes private String type; 2185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 2205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Constructor. 2215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 2225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 2235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public Variable() { 2245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes codeIndex = -1; 2255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes name = "unknown"; 2265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes signature = "unknown"; 2275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes length = -1; 2285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes slot = -1; 2295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes tag = JDWPConstants.Tag.NO_TAG; 2305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes type = "unknown type"; 2315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 2345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets code index of variable. 2355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 2365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return long 2375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 2385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public long getCodeIndex() { 2395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return codeIndex; 2405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 2435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets new code index for variable. 2445f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 2455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param codeIndex 2465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 2475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setCodeIndex(long codeIndex) { 2485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.codeIndex = codeIndex; 2495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 2525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets variable name. 2535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 2545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return String 2555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 2565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public String getName() { 2575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return name; 2585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 2615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets new variable name. 2625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 2635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param name 2645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * new variable name 2655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 2665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setName(String name) { 2675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.name = name; 2685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 2715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets signature of the variable reference type. 2725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 2735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return String 2745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 2755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public String getSignature() { 2765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return signature; 2775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 2795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 2805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets new signature and detects value of a type tag. 2815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 2825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param signature 2835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 2845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setSignature(String signature) { 2855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes switch (signature.charAt(0)) { 2865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case '[': 2875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes tag = JDWPConstants.Tag.ARRAY_TAG; 2885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 2895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case 'B': 2905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes tag = JDWPConstants.Tag.BYTE_TAG; 2915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 2925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case 'C': 2935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes tag = JDWPConstants.Tag.CHAR_TAG; 2945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 2955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case 'L': 2965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes tag = JDWPConstants.Tag.OBJECT_TAG; 2975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 2985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case 'F': 2995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes tag = JDWPConstants.Tag.FLOAT_TAG; 3005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 3015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case 'D': 3025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes tag = JDWPConstants.Tag.DOUBLE_TAG; 3035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 3045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case 'I': 3055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes tag = JDWPConstants.Tag.INT_TAG; 3065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 3075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case 'J': 3085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes tag = JDWPConstants.Tag.LONG_TAG; 3095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 3105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case 'S': 3115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes tag = JDWPConstants.Tag.SHORT_TAG; 3125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 3135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case 'V': 3145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes tag = JDWPConstants.Tag.VOID_TAG; 3155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 3165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case 'Z': 3175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes tag = JDWPConstants.Tag.BOOLEAN_TAG; 3185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 3195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case 's': 3205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes tag = JDWPConstants.Tag.STRING_TAG; 3215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 3225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case 't': 3235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes tag = JDWPConstants.Tag.THREAD_TAG; 3245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 3255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case 'g': 3265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes tag = JDWPConstants.Tag.THREAD_GROUP_TAG; 3275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 3285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case 'l': 3295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes tag = JDWPConstants.Tag.CLASS_LOADER_TAG; 3305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 3315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case 'c': 3325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes tag = JDWPConstants.Tag.CLASS_OBJECT_TAG; 3335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 3345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 3355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 3365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.signature = signature; 3375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 3385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 3395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 3405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets variable length. 3415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 3425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return int 3435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 3445f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public int getLength() { 3455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return length; 3465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 3475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 3485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 3495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Sets new variable length. 3505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 3515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param length 3525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * new variable length 3535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 3545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setLength(int length) { 3555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.length = length; 3565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 3575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 3585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 3595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Returns variable slot value. 3605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 3615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return int 3625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 3635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public int getSlot() { 3645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return slot; 3655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 3665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 3675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 3685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Assigns new slot value. 3695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 3705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @param slot 3715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * new slot value 3725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 3735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void setSlot(int slot) { 3745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes this.slot = slot; 3755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 3765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 3775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 3785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets variable type tag value. 3795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 3805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return byte 3815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 3825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public byte getTag() { 3835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return tag; 3845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 3855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 3865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 3875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Gets variable java type. 3885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 3895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return String 3905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 3915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public String getType() { 3925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes switch (tag) { 3935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.ARRAY_TAG: 3945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes switch (signature.charAt(1)) { 3955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case 'B': 3965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes type = "byte[]"; 3975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 3985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case 'C': 3995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes type = "char[]"; 4005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 4015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case 'J': 4025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes type = "long[]"; 4035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 4045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case 'F': 4055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes type = "float[]"; 4065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 4075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case 'D': 4085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes type = "double[]"; 4095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 4105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case 'I': 4115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes type = "int[]"; 4125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 4135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case 'S': 4145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes type = "short[]"; 4155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 4165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case 'V': 4175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes type = "void[]"; 4185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 4195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case 'Z': 4205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes type = "boolean[]"; 4215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 4225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case 's': 4235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes type = "java.Lang.String[]"; 4245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 4255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case 'L': 4265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes type = signature 4275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes .substring(2, signature.length() - 1 /* 4285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * skip 4295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * ending 4305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * ';' 4315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */) 4325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes .replaceAll("/", ".") 4335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + "[]"; // skip ending ';' 4345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 4355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 4365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 4375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.OBJECT_TAG: 4385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes type = signature 4395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes .substring(1, signature.length() - 1 /* 4405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * skip ending 4415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * ';' 4425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */) 4435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes .replaceAll("/", "."); // skip ending ';' 4445f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 4455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.BOOLEAN_TAG: 4465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes type = "boolean"; 4475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 4485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.BYTE_TAG: 4495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes type = "byte"; 4505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 4515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.CHAR_TAG: 4525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes type = "char"; 4535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 4545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.DOUBLE_TAG: 4555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes type = "double"; 4565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 4575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.FLOAT_TAG: 4585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes type = "float"; 4595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 4605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.INT_TAG: 4615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes type = "int"; 4625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 4635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.LONG_TAG: 4645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes type = "long"; 4655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 4665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.SHORT_TAG: 4675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes type = "short"; 4685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 4695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes case JDWPConstants.Tag.STRING_TAG: 4705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes type = "string"; 4715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 4725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes default: 4735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes break; 4745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 4755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 4765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return type; 4775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 4785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 4795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 4805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Converts Variable object to String. 4815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 4825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @see java.lang.Object#toString() 4835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return String 4845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 4855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public String toString() { 4865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return "Variable: codeIndex=" + codeIndex + ", name=" + name 4875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + ", signature=" + signature + ", length=" + length 4885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + ", slot=" + slot + ", tag=" 4895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes + JDWPConstants.Tag.getName(tag) + ", type=" + type; 4905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 4915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 4925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 4935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Compares two Variable objects. 4945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 4955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @see java.lang.Object#equals(java.lang.Object) 4965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @return boolean 4975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 4985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public boolean equals(Object obj) { 4995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if (!(obj instanceof Variable)) { 5005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return false; 5015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 5025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 5035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if (this.getClass() != obj.getClass()) { 5045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return false; 5055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 5065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 5075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes Variable var = (Variable) obj; 5085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return this.codeIndex == var.codeIndex 5095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes && this.name.equals(var.name) 5105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes && this.signature.equals(var.signature) 5115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes && this.length == var.length && this.slot == var.slot 5125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes && this.tag == var.tag && this.type.equals(var.type); 5135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 5145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 5155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 5165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes} 517