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