12bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson/*
22bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * Copyright (C) 2011 The Android Open Source Project
32bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson *
42bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * Licensed under the Apache License, Version 2.0 (the "License");
52bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * you may not use this file except in compliance with the License.
62bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * You may obtain a copy of the License at
72bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson *
82bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson *      http://www.apache.org/licenses/LICENSE-2.0
92bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson *
102bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * Unless required by applicable law or agreed to in writing, software
112bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * distributed under the License is distributed on an "AS IS" BASIS,
122bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * See the License for the specific language governing permissions and
142bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * limitations under the License.
152bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson */
162bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson
172bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilsonpackage com.android.dex;
182bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson
192bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilsonpublic final class ClassData {
202bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    private final Field[] staticFields;
212bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    private final Field[] instanceFields;
222bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    private final Method[] directMethods;
232bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    private final Method[] virtualMethods;
242bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson
252bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    public ClassData(Field[] staticFields, Field[] instanceFields,
262bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson            Method[] directMethods, Method[] virtualMethods) {
272bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson        this.staticFields = staticFields;
282bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson        this.instanceFields = instanceFields;
292bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson        this.directMethods = directMethods;
302bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson        this.virtualMethods = virtualMethods;
312bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    }
322bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson
332bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    public Field[] getStaticFields() {
342bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson        return staticFields;
352bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    }
362bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson
372bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    public Field[] getInstanceFields() {
382bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson        return instanceFields;
392bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    }
402bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson
412bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    public Method[] getDirectMethods() {
422bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson        return directMethods;
432bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    }
442bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson
452bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    public Method[] getVirtualMethods() {
462bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson        return virtualMethods;
472bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    }
482bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson
492bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    public Field[] allFields() {
502bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson        Field[] result = new Field[staticFields.length + instanceFields.length];
512bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson        System.arraycopy(staticFields, 0, result, 0, staticFields.length);
522bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson        System.arraycopy(instanceFields, 0, result, staticFields.length, instanceFields.length);
532bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson        return result;
542bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    }
552bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson
562bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    public Method[] allMethods() {
572bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson        Method[] result = new Method[directMethods.length + virtualMethods.length];
582bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson        System.arraycopy(directMethods, 0, result, 0, directMethods.length);
592bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson        System.arraycopy(virtualMethods, 0, result, directMethods.length, virtualMethods.length);
602bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson        return result;
612bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    }
622bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson
632bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    public static class Field {
642bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson        private final int fieldIndex;
652bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson        private final int accessFlags;
662bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson
672bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson        public Field(int fieldIndex, int accessFlags) {
682bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson            this.fieldIndex = fieldIndex;
692bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson            this.accessFlags = accessFlags;
702bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson        }
712bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson
722bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson        public int getFieldIndex() {
732bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson            return fieldIndex;
742bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson        }
752bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson
762bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson        public int getAccessFlags() {
772bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson            return accessFlags;
782bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson        }
792bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    }
802bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson
812bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    public static class Method {
822bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson        private final int methodIndex;
832bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson        private final int accessFlags;
842bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson        private final int codeOffset;
852bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson
862bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson        public Method(int methodIndex, int accessFlags, int codeOffset) {
872bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson            this.methodIndex = methodIndex;
882bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson            this.accessFlags = accessFlags;
892bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson            this.codeOffset = codeOffset;
902bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson        }
912bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson
922bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson        public int getMethodIndex() {
932bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson            return methodIndex;
942bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson        }
952bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson
962bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson        public int getAccessFlags() {
972bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson            return accessFlags;
982bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson        }
992bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson
1002bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson        public int getCodeOffset() {
1012bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson            return codeOffset;
1022bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson        }
1032bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson    }
1042bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson}
105