1e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes/* 2e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 3e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * contributor license agreements. See the NOTICE file distributed with 4e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * this work for additional information regarding copyright ownership. 5e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 6e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * (the "License"); you may not use this file except in compliance with 7e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * the License. You may obtain a copy of the License at 8e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 9e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 10e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 11e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Unless required by applicable law or agreed to in writing, software 12e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 13e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * See the License for the specific language governing permissions and 15e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * limitations under the License. 16e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 17e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 18e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughespackage tests.util; 19e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 20e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughesimport java.util.Stack; 21e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 22e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes/** 23e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * A stack to store the parameters of a call, as well as the call stack. 24e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 25e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 26e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughespublic class CallVerificationStack extends Stack<Object> { 27e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 28e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /* 29e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * -------------------------------------------------------------------- 30e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Class variables 31e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * -------------------------------------------------------------------- 32e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 33e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 34e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes private static final long serialVersionUID = 1L; 35e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 36e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes // the singleton 37e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes private static final CallVerificationStack _instance = new CallVerificationStack(); 38e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 39e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /* 40e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * -------------------------------------------------------------------- 41e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Instance variables 42e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * -------------------------------------------------------------------- 43e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 44e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 45e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes // the call stack, store StackTraceElement 46e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes private final Stack<StackTraceElement> callStack = new Stack<StackTraceElement>(); 47e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 48e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /* 49e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * ------------------------------------------------------------------- 50e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Constructors 51e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * ------------------------------------------------------------------- 52e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 53e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 54e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /** 55e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Can't be instantiated. 56e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 57e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes private CallVerificationStack() { 58e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes // empty 59e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 60e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 61e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /* 62e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * ------------------------------------------------------------------- 63e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Methods 64e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * ------------------------------------------------------------------- 65e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 66e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 67e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /** 68e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Gets the singleton instance. 69e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 70e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @return the singleton instance 71e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 72e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public static CallVerificationStack getInstance() { 73e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes return _instance; 74e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 75e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 76e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /** 77e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Pushes the call stack. 78e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 79e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes private void pushCallStack() { 80e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes StackTraceElement[] eles = (new Throwable()).getStackTrace(); 81e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes int i; 82e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes for (i = 1; i < eles.length; i++) { 83e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes if (!eles[i].getClassName().equals(this.getClass().getName())) { 84e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes break; 85e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 86e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 87e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes this.callStack.push(eles[i]); 88e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 89e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 90e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /** 91e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Gets the "current" calling class name. 92e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 93e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @return the "current" calling class name 94e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 95e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public String getCurrentSourceClass() { 96e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes return this.callStack.peek().getClassName(); 97e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 98e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 99e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /** 100e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Gets the "current" calling method name. 101e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 102e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @return the "current" calling method name 103e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 104e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public String getCurrentSourceMethod() { 105e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes return this.callStack.peek().getMethodName(); 106e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 107e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 108e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /** 109e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Clear the parameter stack and the call stack. 110e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 111e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 112e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes @Override 113e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public void clear() { 114e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes this.callStack.clear(); 115e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes super.clear(); 116e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 117e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 118e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes @Override 119e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public Object push(Object o) { 120e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes pushCallStack(); 121e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes return super.push(o); 122e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 123e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 124e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /** 125e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Pushes a boolean onto the top of this stack. 126e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 127e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @param val 128e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * the value to push 129e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 130e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public void push(boolean val) { 131e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes this.push(new BaseTypeWrapper(val)); 132e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 133e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 134e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /** 135e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Pushes a char onto the top of this stack. 136e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 137e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @param val 138e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * the value to push 139e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 140e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public void push(char val) { 141e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes this.push(new BaseTypeWrapper(val)); 142e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 143e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 144e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /** 145e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Pushes a double onto the top of this stack. 146e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 147e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @param val 148e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * the value to push 149e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 150e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public void push(double val) { 151e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes this.push(new BaseTypeWrapper(val)); 152e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 153e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 154e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /** 155e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Pushes a float onto the top of this stack. 156e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 157e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @param val 158e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * the value to push 159e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 160e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public void push(float val) { 161e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes this.push(new BaseTypeWrapper(val)); 162e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 163e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 164e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /** 165e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Pushes an int onto the top of this stack. 166e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 167e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @param val 168e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * the value to push 169e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 170e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public void push(int val) { 171e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes this.push(new BaseTypeWrapper(val)); 172e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 173e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 174e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /** 175e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Pushes a long onto the top of this stack. 176e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 177e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @param val 178e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * the value to push 179e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 180e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public void push(long val) { 181e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes this.push(new BaseTypeWrapper(val)); 182e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 183e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 184e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /** 185e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Pushes a short onto the top of this stack. 186e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 187e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @param val 188e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * the value to push 189e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 190e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public void push(short val) { 191e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes this.push(new BaseTypeWrapper(val)); 192e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 193e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 194e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /** 195e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Pop an object. 196e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 197e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @return the object 198e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 199e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes @Override 200e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public Object pop() { 201e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes this.callStack.pop(); 202e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes return super.pop(); 203e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 204e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 205e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /** 206e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Pop a boolean. 207e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 208e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @return the value 209e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 210e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public boolean popBoolean() { 211e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes BaseTypeWrapper wrapper = (BaseTypeWrapper) this.pop(); 212e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes Boolean value = (Boolean) wrapper.getValue(); 213e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes return value.booleanValue(); 214e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 215e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 216e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /** 217e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Pop a char. 218e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 219e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @return the value 220e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 221e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public char popChar() { 222e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes BaseTypeWrapper wrapper = (BaseTypeWrapper) this.pop(); 223e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes Character value = (Character) wrapper.getValue(); 224e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes return value.charValue(); 225e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 226e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 227e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /** 228e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Pop a double. 229e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 230e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @return the value 231e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 232e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public double popDouble() { 233e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes BaseTypeWrapper wrapper = (BaseTypeWrapper) this.pop(); 234e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes Double value = (Double) wrapper.getValue(); 235e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes return value.doubleValue(); 236e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 237e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 238e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /** 239e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Pop a float. 240e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 241e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @return the value 242e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 243e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public float popFloat() { 244e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes BaseTypeWrapper wrapper = (BaseTypeWrapper) this.pop(); 245e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes Float value = (Float) wrapper.getValue(); 246e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes return value.floatValue(); 247e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 248e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 249e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /** 250e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Pop a int. 251e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 252e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @return the value 253e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 254e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public int popInt() { 255e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes BaseTypeWrapper wrapper = (BaseTypeWrapper) this.pop(); 256e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes Integer value = (Integer) wrapper.getValue(); 257e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes return value.intValue(); 258e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 259e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 260e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /** 261e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Pop a long. 262e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 263e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @return the value 264e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 265e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public long popLong() { 266e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes BaseTypeWrapper wrapper = (BaseTypeWrapper) this.pop(); 267e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes Long value = (Long) wrapper.getValue(); 268e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes return value.longValue(); 269e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 270e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 271e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /** 272e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Pop a short. 273e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * 274e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * @return the value 275e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 276e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public short popShort() { 277e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes BaseTypeWrapper wrapper = (BaseTypeWrapper) this.pop(); 278e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes Short value = (Short) wrapper.getValue(); 279e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes return value.shortValue(); 280e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 281e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 282e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /* 283e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Wrapper of base types. 284e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 285e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes class BaseTypeWrapper { 286e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 287e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes // the internal value 288e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes private Object value; 289e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 290e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /* 291e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Constructs a wrapper object for the base type <code> boolean </code> . 292e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 293e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public BaseTypeWrapper(boolean val) { 294e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes this.value = new Boolean(val); 295e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 296e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 297e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /* 298e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Constructs a wrapper object for the base type <code> c </code> . 299e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 300e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public BaseTypeWrapper(byte val) { 301e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes this.value = new Byte(val); 302e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 303e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 304e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /* 305e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Constructs a wrapper object for the base type <code> char </code> . 306e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 307e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public BaseTypeWrapper(char val) { 308e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes this.value = new Character(val); 309e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 310e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 311e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /* 312e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Constructs a wrapper object for the base type <code> double </code> . 313e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 314e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public BaseTypeWrapper(double val) { 315e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes this.value = new Double(val); 316e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 317e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 318e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /* 319e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Constructs a wrapper object for the base type <code> float </code> . 320e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 321e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public BaseTypeWrapper(float val) { 322e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes this.value = new Float(val); 323e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 324e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 325e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /* 326e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Constructs a wrapper object for the base type <code> int </code> . 327e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 328e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public BaseTypeWrapper(int val) { 329e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes this.value = new Integer(val); 330e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 331e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 332e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /* 333e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Constructs a wrapper object for the base type <code> long </code> . 334e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 335e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public BaseTypeWrapper(long val) { 336e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes this.value = new Long(val); 337e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 338e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 339e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /* 340e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Constructs a wrapper object for the base type <code> short </code> . 341e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 342e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public BaseTypeWrapper(short val) { 343e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes this.value = new Short(val); 344e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 345e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 346e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes /* 347e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes * Gets the internal value. 348e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes */ 349e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes public Object getValue() { 350e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes return this.value; 351e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 352e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 353e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes} 354