1d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen/*
2d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Copyright 2012, Google Inc.
3d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * All rights reserved.
4d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *
5d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * Redistribution and use in source and binary forms, with or without
6d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * modification, are permitted provided that the following conditions are
7d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * met:
8d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *
9d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *     * Redistributions of source code must retain the above copyright
10d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * notice, this list of conditions and the following disclaimer.
11d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *     * Redistributions in binary form must reproduce the above
12d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * copyright notice, this list of conditions and the following disclaimer
13d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * in the documentation and/or other materials provided with the
14d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * distribution.
15d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *     * Neither the name of Google Inc. nor the names of its
16d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * contributors may be used to endorse or promote products derived from
17d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * this software without specific prior written permission.
18d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen *
19d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen */
31d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
32d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpackage org.jf.dexlib2.immutable.value;
33d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
34d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport org.jf.dexlib2.base.value.BaseByteEncodedValue;
35d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenimport org.jf.dexlib2.iface.value.ByteEncodedValue;
36d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
37d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chenpublic class ImmutableByteEncodedValue extends BaseByteEncodedValue implements ImmutableEncodedValue {
38d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    protected final byte value;
39d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
40d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public ImmutableByteEncodedValue(byte value) {
41d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        this.value = value;
42d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    }
43d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
44d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    public static ImmutableByteEncodedValue of(ByteEncodedValue byteEncodedValue) {
45d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        if (byteEncodedValue instanceof ImmutableByteEncodedValue) {
46d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen            return (ImmutableByteEncodedValue)byteEncodedValue;
47d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        }
48d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen        return new ImmutableByteEncodedValue(byteEncodedValue.getValue());
49d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    }
50d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen
51d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen    @Override public byte getValue() { return value; }
52d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen}
53d7955ce24d294fb2014c59d11fca184471056f44Shuyi Chen