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